admin 管理员组

文章数量: 1087139


2024年3月18日发(作者:初级编程书)

C/C++如何产生随机数

C/C++如何产生随机数:这里要用到的是rand()函数, srand()函数,

C语言/C++里没有自带的random(int number)函数。

(1)假设你仅仅要产生随机数而不须要设定范围的话,你仅仅要用

rand()就能够了:rand()会返回一随机数值, 范围在0至RAND_MAX

间。RAND_MAX定义在stdlib.h, 其值为2147483647。

比如:

(2)假设你要随机生成一个在一定范围的数,你能够在宏定义中定义

一个random(int number)函数,然后在main()里面直接调用random()

函数:

比如:随机生成10个0~100的数:

#include

#include

#define random(x) (rand()%x)

void main()

{

for(int x=0;x<10;x++)

printf("%d/n",random(100));

}

(3)可是上面两个样例所生成的随机数都仅仅能是一次性的,假设你

第二次执行的时候输出结果仍和第一次一样。这与srand()函数有关。

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

函数产生随机数前,必须先利用srand()设好随机数种子(seed), 假

设未设随机数种子, rand()在调用时会自己主动设随机数种子为1。

上面的两个样例就是由于没有设置随机数种子,每次随机数种子都自

己主动设成同样值1 ,进而导致rand()所产生的随机数值都一样。

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

通常能够利用geypid()或time(0)的返回值来当做seed

假设你用time(0)的话,要增加头文件#include

比如:

#include

#include

#include

#define random(x) (rand()%x)

void main()

{

srand((int)time(0));

for(int x=0;x<10;x++)

printf("%d/n",random(100));

}


本文标签: 没有 设置 产生 种子