伪随机数
作者:
小小蒟蒻
,
2020-10-12 08:31:49
,
所有人可见
,
阅读 653
rand() 返回一个范围在 0 到 RAND_MAX 之间的伪随机数。
RAND_MAX 是一个常量,它的默认值在不同的实现中会有所不同,但是值至少是 32767
即rand()函数返回的值就在区间[0, RAND_MAX)上
当a <= b时,
rand() % (b - a) 生成的伪随机数落在区间[0, b - a)上
rand() % (b - a + 1) 生成的伪随机数落在区间[0, b - a]上
所以有一下几种区间的形式
要取得[a,b)的随机整数,使用(rand() % (b-a))+ a;
要取得[a,b]的随机整数,使用(rand() % (b-a+1))+ a;
要取得(a,b]的随机整数,使用(rand() % (b-a))+ a + 1;
通用公式:a + rand() % n;其中的a是起始值,n是整数的范围。
要取得a到b之间的随机整数,另一种表示:a + (int)b * rand() / (RAND_MAX + 1)。
要取得0~1之间的浮点数,可以使用rand() / double(RAND_MAX)。
#include <stdio.h> /* printf, scanf, puts, NULL */
#include <stdlib.h> /* srand, rand */
#include <time.h> /* time */
//RAND_MAX
//0-32767之间,如何获取300到800之间随机
int main()
{
srand(time(NULL)); //seed rand
int i = 20;
while (i--)
{
printf("%d ", rand()%(500 - 300 + 1)+300);//伪随机数
}
putchar(10);
}
printf(“%d “, rand()%(500 - 300 + 1)+300);/ 这是300到501(还是501)的随机数呀呀