Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何使用srand和rand不断生成新数字?_C_Random_Srand - Fatal编程技术网

C 如何使用srand和rand不断生成新数字?

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

在我的主要功能中,下面的函数片段是循环的,以保持生成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, 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的复制品哦,好的!谢谢明白了!非常感谢。明白了!非常感谢。