【问题标题】:How to use srand and rand to continuously generate new numbers?如何使用 srand 和 rand 不断产生新的数字?
【发布时间】:2018-03-23 18:43:36
【问题描述】:

在我的 main 函数中,下面的函数片段被循环以不断生成 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;
}

【问题讨论】:

标签: c random srand


【解决方案1】:

您显示的代码没有做任何可能导致核心转储的事情,所以这可能在您没有显示的代码中。但是,您错误地使用了srand

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

您应该在程序开始时只调用一次srand。之后,只要您需要一个新的随机数,只需拨打rand

【讨论】:

  • 明白了!谢谢!
猜你喜欢
  • 2020-03-26
  • 1970-01-01
  • 1970-01-01
  • 2014-05-01
  • 1970-01-01
  • 2021-01-23
  • 1970-01-01
  • 1970-01-01
  • 2016-05-30
相关资源
最近更新 更多