今天看到一段小程序 ,里面用到随机数。才发现在C语言中产生随机数不像matlab中那么简单。
C中也有rand()函数,但是rand()函数产生的数不是真正意义上的随机数,是一个伪随机数,是根据一个数,我们称它为种子,为基准以某个递推公式推算出来的一系列数。范围在0~RAND_MAX之间。RAND_MAX和rand()一样也定义在stdlib.h中,其值至少为32767。当计算机正常开机后,种子是固定了的。所以如果不结合其他函数,使用rand()产生随机数就会出现以下情况:
#include
int main()
{
int i,j;
for(i=;i
{
j=+(int)(rand()%);
printf("%d",j);
}
}
你会发现程序连续执行N次的结果是一样的,这是因为如果未设置随机数种子,rand()在调用时会默认随机数种子为1。为了解决这个问题C提供了srand()函数。所以在调用rand()产生随机数之前必须调用srand()设置种子。srand()的原形是void srand(int a)。下面结合srand()的使用我们编写一个产生随机数的程序:
#include
#include
#include
int main()
<