一、rand()
功能:随机数发生器
参数:无
返回值:0 与 RAND_MAX 间的随机整数值
头文件:定义于头文件 < cstdlib >
函数说明:rand() 返回随机数值的范围在 0~RAND_MAX 之间。0 ~ RAND_MAX之间每个数字被选中的概率是相同的。
注释:不保证生成的随机数列质量。如果在程序中只是用 rand(),那么如果你多次运行的化,产生的随机数是一样的,这个原因就在于每次运行的时候,默认的随机数种子都是一样的,都为1,**rand()**产生的是伪随机数,每次执行时相同的;如果要产生不同的随机数,则需要使用到 srand()。
拓展:
要取得[a,b)的随机整数,使用(rand() % (b-a))+ a (结果值含a不含b)。
要取得[a,b]的随机整数,使用(rand() % (b-a+1))+ a (结果值含a和b)。
要取得(a,b]的随机整数,使用(rand() % (b-a))+ a + 1 (结果值不含a含b)。
要取得0~1之间的浮点数,可以使用rand() / double(RAND_MAX)。
二、srand()
功能:初始化随机数发生器
参数:seed - 种子值
返回值:无
头文件:定义于头文件 < cstdlib >
函数说明:以值 seed 播种 std::rand() 所用的随机数生成器。
注释:通常来说,应该只播种一次随机数生成器,在程序开始出,任何到 rand() 的调用前。不应重复播种,或每次冀愿生成新一批随机数时重播种。
标准实践是使用以 **time(0) **为种子调用的结果。然而 time() 返回 time_t 值,而不保证 time_t 是整数类型。尽管实践中,主流实现都定义 time_t 为整数类型,且此亦为 POSIX 所要求。
参考:
1、C++中随机函数rand()和srand()的用法
2、std::rand
3、std::srand