侧边栏壁纸
博主头像
noerror

虚灵不寐,众理具而万事出。

  • 累计撰写 239 篇文章
  • 累计创建 9 个标签
  • 累计收到 2 条评论
标签搜索

目 录CONTENT

文章目录

drand48函数用法详解

noerror
2022-10-19 / 0 评论 / 0 点赞 / 137 阅读 / 680 字 / 正在检测是否收录...

drand48函数用法详解

drand48函数简介

  • 头文件包含
#include <stdlib.h>
  • 函数定义
double drand48(void);
double erand48(unsigned short  xsubi [3]);
long lrand48(void);
long nrand48(unsigned short  xsubi [3]);
long mrand48(void);
long jrand48(unsigned short  xsubi [3]);
void srand48(long  seedval );
unsigned short *seed48(unsigned short  seed16v [3]);
void lcong48(unsigned short  param [7]);

drand48函数常见使用错误

  • 编译错误
    warning: implicit declaration of function ‘drand48’ [-Wimplicit-function-declaration]
    解决办法:包含头文件
#include <stdlib.h>

drand48函数详细描述

这些函数使用线性同余算法和48位整数算法生成伪随机数。
drand48 ()和erand48 ()函数返回非负双精度浮点值,均匀分布在区间[0.0,\1.0)上。
lrand48 ()和nrand48 ()函数返回均匀分布在区间[0,\231)上的非负长整数。
mrand48 ()和jrand48 ()函数返回均匀分布在区间[\2
31,\2^31)上的有符号长整数。
srand48 () seed48 ()和lcong48 ()函数是初始化函数,在使用drand48 () lrand48 ()或mrand48 ()之前应该调用其中一个函数。函数erand48 () nrand48 ()和jrand48 ()不需要首先调用初始化函数。
所有函数都是通过根据线性同余式生成一个48位整数序列Xi 来工作的:

Xn+1 = (aXn + c) mod m,   where n >= 0

参数m=2^48,因此执行48位整数算术。除非调用lcong48 (),否则a和c由:

a = 0x5DEECE66D
c = 0xB

任何函数drand48 ()、erand48 ()、lrand48 ()、nrand48 ()、mrand48 ()或jrand48 ()返回的值都是通过首先生成序列中的下一个48位Xi来计算的。然后,根据要返回的数据项的类型,从Xi的高阶位复制适当的位数并转换为返回值。
函数drand48 ()、lrand48 ()和mrand48 ()将生成的最后48位Xi存储在内部缓冲区中。函数erand48 ()、nrand48 ()和jrand48 ()要求调用程序在数组参数xsubi 中为连续的Xi值提供存储。在第一次调用函数之前,通过将Xi的初始值放入数组来初始化函数。
初始化器函数srand48 ()将Xi的高阶32位设置为参数seedval ,低阶16位设置为任意值0x330e。
初始化器函数seed48 ()将Xi的值设置为数组参数seed16v 中指定的48位值,Xi的前一个值被复制到一个内部缓冲区中,seed48 ()返回一个指向该缓冲区的指针
初始化函数lcong48 ()允许用户为Xi a 和c 数组参数元素指定初始值param[0-2]指定Xi param[3-5]指定a 和param[6]指定c 。在调用了lcong48 ()之后,随后对srand48 ()或seed48 ()的调用将恢复a和c 的标准值

0

评论区