srand随机数

在看AMCL源码中,发现srand函数

srand48(time(NULL));

表示根据当前系统时间,获取48位运算随机数

需要的头文件

#include <stdlib.h>
#include <time.h>

[此处内容转自https://blog.csdn.net/cnmilan/article/details/7103786] 

srand()用来设置rand()产生随机数时的随机数种子。

定义函数:void srand (unsigned int seed);

参数seed必须是个整数,通常可以利用geypid()或time(0)的返回值来当做seed。如果每次seed都设相同值,rand()所产生的随机数值每次就会一样。

srand48()——获取48位运算随机数(数据类型:double);

time(0)——获取当前时间(long);

getpid()——获取当前进程识别码(long);

srand48(time(0) ^ getpid())就是产生一个48位种子随机数。该随机函数的种子参数是time(0) ^ getpid(),即:系统时间(从某个时间到现存的秒数,类型为long)的当前进程识别码次方。
这个函数在UNIX系统的C、C++中存在。WINDOWS中一般不用(VC++不用)。例如当前时间为10E30秒,当前进程为100,上述式子相当于windows 下的rand(10E30*100)=rand(10E32)。
返回值,一般赋给编程人员要用的变量,或直接作为参数传递给另一个函数。

原文地址:https://www.cnblogs.com/havain/p/15009945.html