Kid*_*ris 21
C++标准没有指定rand()函数使用的算法.
该功能由在您的系统上编写标准库的人定义:Microsoft用于Visual Studio附带的标准库,以及用于GCC打包的标准库的GNU人员.
您的编译器可以选择从哪里获取库,因此您可能在同一系统上为不同的编译器提供不同版本的标准库.重点保持不变:规范保证了可用的功能和功能; 不是他们怎么做的
rand()函数应计算范围为[0,{RAND_MAX}]的伪随机整数序列,其周期至少为2 ^ 32.
rand_r()函数应计算[0,{RAND_MAX}]范围内的伪随机整数序列.({RAND_MAX}宏的值至少应为32767.)
如果使用与seed指向的对象相同的初始值调用rand_r(),并且在连续返回和调用rand_r()之间不修改该对象,则应生成相同的序列.
srand()函数使用该参数作为后续调用rand()返回的新伪随机数序列的种子.如果随后使用相同的种子值调用srand(),则应重复伪随机数序列.如果在对srand()进行任何调用之前调用rand(),则应生成与首次调用种子值为1的srand()时相同的序列.
rand()函数应返回序列中的下一个伪随机数.
这就是IEEE Std 1003.1 C标准关于rand()
函数应该如何表现的内容.它没有说明如何计算序列.换句话说,每个实现者可以自由选择他们自己的伪随机序列生成器版本.
你的观察表明他们利用了这种自由.
我还要指出的是,rand()
是的一部分,<cstdlib>
这是C标准库的更多或更少的副本,新的图书馆会为您提供更多的灵活性和标准序列生成器,如果你有一个新的足够的C++编译器,并且不依赖于C - C++的互操作性.
归档时间: |
|
查看次数: |
2078 次 |
最近记录: |