一、缘由
最近需要将windows下的项目移植到linux下,但因为项目使用到随机函数,导致最后两边的结果有些微差异,因此需要将两边随机函数统一来保证运行结果每一步能对应上。
大家常用的随机函数有srand()/rand();
二、srand()/rand()
1.项目中采用的随机数生成函数是 rand()。
rand()返回一随机,数值的范围在0至RAND_MAX 间。
它的内部实现是用线性同余法做的,产生的新随机数作为下一次随机数的种子,它不是真的随机数,因其周期特别长,故在一定的范围里可看成是随机的。
线性同余法的原理:
X_{n+1} = ( a * X_n + c ) mod m
windows 下RAND_MAX 为32767(16位)。
linux下为2147483647(32位)
如果不用srand()指定随机函数,指定默认情况下种子为1。
2.其用法为:
void srand(unsigned int seed);
int rand();
#include <stdlib.h>//rand()头文件
#include <time.h> //为了
srand((