如何使用srand和rand连续生成新数字?

时间:2018-03-23 18:43:36

标签: c random srand

在我的主要功能中,下面的函数片段循环以继续生成0到4之间的两个数字。第一次它通过循环它工作正常,但第二次它被核心转储。我不确定是不是因为其他地方的错误,或者我是不是正确地使用了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;
}

1 个答案:

答案 0 :(得分:3)

您展示的代码不会执行任何可能导致核心转储的代码,因此可能在您未显示的代码中。但是您错误地使用了srand

rand函数返回的随机数实际上是一系列通过函数传递的数字,最后一个输出是新输入。这个函数在第一次运行之前需要播种,这就是srand函数的作用。

您应该在程序开头只调用一次srand。之后,只要您需要新的随机数,就可以致电rand