C 如何使用srand和rand不断生成新数字?
在我的主要功能中,下面的函数片段是循环的,以保持生成0和4之间的两个数字。它第一次通过循环时工作正常,但第二次被丢弃。我不确定是因为其他地方的bug,还是我没有正确使用rand和srand。这里对c语言非常陌生C 如何使用srand和rand不断生成新数字?,c,random,srand,C,Random,Srand,在我的主要功能中,下面的函数片段是循环的,以保持生成0和4之间的两个数字。它第一次通过循环时工作正常,但第二次被丢弃。我不确定是因为其他地方的bug,还是我没有正确使用rand和srand。这里对c语言非常陌生 void generate_player2_move(char board[][SIZE], int row, int col) { //segmentation fault (core dumped) somewhere around here. int randrow
void generate_player2_move(char board[][SIZE], int row, int col) {
//segmentation fault (core dumped) somewhere around here.
int randrow, randcol;
srand((unsigned) randrow);
srand((unsigned) randcol);
row = rand() % 4;
col = rand() % 4;
}
您所展示的代码没有做任何可能导致核心转储的事情,因此您可能没有展示的代码中也有这种情况。但是,您使用的
srand
不正确
rand
函数返回的随机数实际上是通过函数传递的一系列数字,最后的输出是新的输入。此函数需要在首次运行之前进行种子设定,而srand
函数就是这样做的
您应该在程序开始时只调用一次
srand
。之后,只要在需要新的随机数时调用rand
。您显示的代码不会导致内核转储,因此可能是在您未显示的代码中。但是,您使用的srand
不正确
rand
函数返回的随机数实际上是通过函数传递的一系列数字,最后的输出是新的输入。此函数需要在首次运行之前进行种子设定,而srand
函数就是这样做的
您应该在程序开始时只调用一次
srand
。之后,只要在需要新的随机数时调用rand
。可能重复@Gilles哦,好的!谢谢可能是@Gilles的复制品哦,好的!谢谢明白了!非常感谢。明白了!非常感谢。