c - 如何在 C 中停止数组中的重复值

标签 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;
    }
  }
}

最佳答案

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

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

此处的标准方法是生成具有连续数字的棋盘,然后通过随机交换元素一定次数来洗牌它。

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

关于c - 如何在 C 中停止数组中的重复值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48545612/

相关文章:

c - printf double 不带尾随零

c - 如何检查 C 中的两个字符串是否相同?

c - GCC 为什么以及如何编译缺少 return 语句的函数?

c - Linux 下 C 中带 FIFO 的 IPC

c - 内存中的套接字文件描述符是什么形式?

c - 与指针比较数组末尾后的一个元素是否定义明确?

python - 可扩展供应协议(protocol)实现?

c - 理解全局变量的概念

C : fscanf called multiple times does not work

C 多线程与 pthread