这是我第一次用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