rand()数字在C中的函数上瘾

时间:2016-11-04 00:29:34

标签: c function random

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int dorand(){
int i;
srand(time(0));
i = rand()%3+1;
return i;
}

int main (){
printf("\n %d \n", dorand());
printf("\n %d \n", dorand());
printf("\n %d \n", dorand());
printf("\n %d \n", dorand());
return 0;
}

问题是:四个printf正在打印相同的数字。 当我直接在main函数中执行rand()时,根本没有问题,但是当我调用一个函数时,随机生成会上瘾到相同的数字。有人有经验可以分享吗?

我试过了:

int main (){
srand(time(0)) //seeding in the main function before calling the dorand function
printf("\n %d \n", dorand());
printf("\n %d \n", dorand());
printf("\n %d \n", dorand());
printf("\n %d \n", dorand());
return 0;
}

另外

int dorand(){
int i;
i = 0; //clearing the variable before attributing a new rand value
srand(time(0));
i = rand()%3+1;
return i;
}

对不起,如果我误解了一些事情,谢谢你的帮助

1 个答案:

答案 0 :(得分:0)

srand函数为随机数生成器播种。对于给定的种子值,将生成相同的随机数集。

由于每次想要一个随机数时重新播种,使用当前时间作为种子,假设每次调用函数都在同一秒内发生,随机数函数将以相同的值播种,所以你不断得到相同&#34;随机&#34;号。

您应该在程序开头只调用一次srand。从dorand移除来电并将其置于main的顶部。