这个问题是关于这个问题的评论
推荐的方法来初始化srand?第一条评论说srand()应该只在应用程序中调用ONCE.为什么会这样?
这条评论指出:
srand(time(0));我会把这一行作为main()中的第一行,而不是多次调用它(这实际上会导致更少的随机数).
......我已经加粗了我遇到问题的界限......重复一个常见的建议,srand在一个程序中调用一次.像srand()这样的问题- 为什么只调用一次?重新迭代,因为time(0)以秒为单位返回当前时间,srand在同一秒内多次调用将产生相同的种子.常见的解决方法是使用毫秒或纳秒.
但是,我不明白为什么这意味着srand应该或只能调用一次,或者它如何导致更少的随机数.
一般来说,伪随机数生成器只应在对rand()的任何调用和程序的开始之前播种一次. 每次您希望生成一批新的伪随机数时,不应重复播种或重新播种.
使用种子值初始化初始状态将生成足够的随机数,因为您没有使用srand设置内部状态, 因此使得数字更可能是随机的.
也许他们只是使用不精确的语言,没有一个解释似乎解释为什么srand多次调用是坏的(除了产生相同的随机数序列)或它如何影响数字的"随机性".有人可以为我清楚这一点吗?
我只是不明白为什么这个Yes/No循环不起作用.有什么建议?鉴于输入是"Y".我只想让它运行循环,然后再次询问Y或N. 如果是Y,则打印成功,如果是N,则打印出良好的再见声明.什么原因?
int main(){
char answer;
printf("\nWould you like to play? Enter Y or N: \n", answer);
scanf("%c", &answer);
printf("\n answer is %c");
while (answer == 'Y'){
printf("Success!");
printf("\nDo you want to play again? Y or N: \n");
scanf("%c", &answer);
}
printf("GoodBye!");
return 0;
}
Run Code Online (Sandbox Code Playgroud)