C++ rand
-
rand() 产生随机数
-
伪随机数
-
周期是65535(猜测周期应该与RAND_MAX 有关)。即每次利用一个随机种子生成的随机数的周期是65535,当你取得65535个随机数后它们又重复出现了。
-
rand() 返回值非负整数,范围为[0, RAND_MAX]。由RAND_MAX决定。不同操作系统或编译器值会不同。
-
在VS中为“ #define RAND_MAX 0x7fff”,即为 32767。
-
centos7中为“#define RAND_MAX 0x7fff ffff”,即 2147483647。
-
-
-
srand 设置随机数种子
-
若不设置随机数种子,rand() 产生的随机数在每次运行的时候都是与上一次相同的。
-
若要不同, 用函数 srand() 初始化它。可以利用 srand((unsigned int)(time(NULL)) 的方法,产生不同的随机数种子,因为每一次运行程序的时间是不同的。
-
-
生成指定范围内随机数的公式:
-
[a,a+n]的随机数,a + rand() % n;a 是起始值,n 是范围。
-
[a,b) 的随机整数,使用 (rand() % (b-a))+ a;
-
[a,b] 的随机整数,使用 (rand() % (b-a+1))+ a;
-
(a,b] 的随机整数,使用 (rand() % (b-a))+ a + 1;
-
0~1 之间的浮点数,使用 rand() / double(RAND_MAX)。
-
-
注意:
-
rand返回的是整数,如果直接使用 rand()/32768,得到的结果始终为0。需要改为rand()/ (double)32768,才能得到想要的效果。(网上有许多滥用“rand()/32768”的代码,需要注意)
-