如何在C

时间:2018-01-31 15:22:26

标签: c

我正在用C创建一个5x5棋盘游戏。我遇到的问题是,当我使用rand()时,它复制了一些数字。如何停止重复和0?

对不起,如果问题太基本了。我是C的新手。

int createboard() {

  int rows;
  int columns;
  int board[5][5];
  int board2[5][5];

  srand(time(NULL));

  for (rows = 0; rows < 5; rows++) {
    for (columns = 0; columns < 5; columns++) {
      randomNumber = rand() % 25;
      board[rows][columns] = randomNumber;
    }
  }
}

3 个答案:

答案 0 :(得分:8)

如果两次绘制相同数字的概率为零,

rand()将不会是一个特别好的生成器。

这里的标准方法是生成具有连续数字的board,然后通过随机交换元素一次 shuffle

一个好的改组算法是https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle

答案 1 :(得分:1)

使用srand()函数代替rand函数。 rand()将在每个程序后给出相同的数字。 请参考此处寻求帮助。这是为了改进你的程序,这不是答案 Rand() vs srand() function

答案 2 :(得分:0)

自downvoted后删除。这就是它被移除的原因。