为什么我总是用rand()得到相同的随机数序列?

这是我第一次用C尝试随机数(我想念C)。这是我的密码:

inti,j=0;
对于(i=0;i<=10;i++){
j=兰德();
printf(“j=%d\n”,j);
}

有了这段代码,我每次运行代码都会得到相同的序列。但是如果我在for循环之前添加srand(/*somevalue/*),它会生成不同的随机序列。有人能解释为什么吗

你必须播种它。用时间播种是个好主意:

srand()

#包括<标准h>
#包括<stdlib.h>
#包括<时间;
int main()
{
srand(时间(空));
printf(“随机数:%d\n”,rand()%100);
返回0;
}

得到相同的序列是因为,若不调用srand(),则rand()会自动使用值1作为种子

编辑

由于评论

rand()将返回一个介于0和rand_MAX之间的数字(在标准库中定义)。使用模运算符(%)可以得到除法的剩余部分rand()/100。这将强制随机数在0-99范围内。例如,要获得0-999范围内的随机数,我们将应用rand()%1000

发表评论