我正在用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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
rand() 如果两次绘制相同数字的概率为零,那么它将不是一个特别好的发电机.
这里的标准方法是生成board具有连续数字的数据,然后通过随机交换元素一定次数来对其进行混洗.
一个很好的改组算法是https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle