用非重复的随机数填充 2D 数组

Fill a 2D array with non-repeating random numbers

本文关键字:填充 2D 数组 随机数      更新时间:2023-10-16

我目前正在尝试用 1-16 的 16 个值填充 2D 数组。我想用非重复的随机值填充数组。

例如,如果我有一个数组int array[4][4]我将如何通过填充数组的循环,同时检查以确保另一个相同的随机值没有放置在数组中的另一个位置?

int array[4][4];
int* p = &array[0][0];
std::iota(p, p+16, 1);
std::random_device r;
std::default_random_engine g(r());
std::shuffle(p, p+16, g);

使用 int randomValue = rand(( % 16 + 1; 并将其存储在另一个辅助 2D 数组中以进行检查。 你应该完成了。

创建一个一维数组,比如大小为 16 的 arr,用 116 的值填充它。在arr上使用随机播放。遍历数组以填充二维数组,例如arr2

for(int i = 0; i < 16; i++){
   arr2[i/4][i%4] = arr[i];
}