在看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)。
返回值,一般赋给编程人员要用的变量,或直接作为参数传递给另一个函数。