gpt4 book ai didi

c++ - 正确使用 rand()?

转载 作者:行者123 更新时间:2023-11-28 00:07:06 24 4
gpt4 key购买 nike

所以这个想法是它接受 main 中的 9x9 数组,并交换行。它只能将 1-3 行与 1-3、4-6 与 4-6 以及 7-9 与 7-9 交换。出于某种原因,它每隔一段时间就会将 4-6 中的一个与 7-9 中的一个交换,而且有时它会给我 7-9 行之一的绝对垃圾。我花了 2 个小时的大部分时间试图找出在这种情况下使用 rand() 的正确方法,我确信我没有正确地做。有什么想法吗?

#include <iostream>
#include <time.h>
#include <stdlib.h>

using namespace std;

void printSudoku(int square[9][9]) // Prints out the 9x9 array
{
for(int i = 0; i < 9; i++)
{
for(int j = 0; j < 9; j++)
{
cout << square[i][j];
}
cout << endl;
}
}

void swapRows(int square[9][9]) // Randomly generates numbers, within bounds, and swaps those rows with each other
{
int temp[1][9];
srand(time(NULL));
int n = (rand() % 2) + 0;
int m = (rand() % 2) + 0;
for(int i = 0; i < 9; i++)
{
temp[0][i] = square[n][i];
}
for(int j = 0; j < 9; j++)
{
square[n][j] = square[m][j];
}
for(int k = 0; k < 9; k++)
{
square[m][k] = temp[0][k];
}
int a = (rand() % 5) + 3;
int b = (rand() % 5) + 3;
for(int i = 0; i < 9; i++)
{
temp[0][i] = square[a][i];
}
for(int j = 0; j < 9; j++)
{
square[a][j] = square[b][j];
}
for(int k = 0; k < 9; k++)
{
square[b][k] = temp[0][k];
}
int c = (rand() % 8) + 6;
int d = (rand() % 8) + 6;
for(int i = 0; i < 9; i++)
{
temp[0][i] = square[c][i];
}
for(int j = 0; j < 9; j++)
{
square[c][j] = square[d][j];
}
for(int k = 0; k < 9; k++)
{
square[d][k] = temp[0][k];
}
}


int main() {
int square[9][9] = {1,2,3,4,5,6,7,8,9,
4,5,6,7,8,9,1,2,3,
7,8,9,1,2,3,4,5,6,
2,3,4,5,6,7,8,9,1,
5,6,7,8,9,1,2,3,4,
8,9,1,2,3,4,5,6,7,
3,4,5,6,7,8,9,1,2,
6,7,8,9,1,2,3,4,5,
9,1,2,3,4,5,6,7,8,};
printSudoku(square);
swapRows(square);
cout << endl;
printSudoku(square);
return 0;
}

最佳答案

当您调用 rand() 时,它会为您提供一个介于 0 和 RAND_MAX 之间的数字。当您使用 rand() % 8 之类的东西时,它会为您提供 0 到 7 之间的随机数。这比您希望随机数跨越的范围更大。您只希望随机数从 0 到 2(0、1 或 2),然后添加第一行的偏移量。

例如,(rand() % 8) + 6 为您提供从 0+6=6 到 7+6=13 的随机数。相反,使用 (rand() % 3) + 6 可以得到 0+6=6 到 2+6=8。

关于c++ - 正确使用 rand()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35006109/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com