我目前正在尝试用1到16的16个值填充2D数组。我想用非重复随机值填充数组。
例如,如果我有一个数组int array[4][4]
,我将如何通过一个循环填充数组,同时检查以确保另一个相同的随机值不被放入数组中的另一个位置?< / p>
答案 0 :(得分:3)
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);
答案 1 :(得分:0)
使用int randomValue = rand()%16 + 1;并将其存储在另一个辅助2D阵列中以进行检查。你应该完成。
答案 2 :(得分:0)
创建一个1-d数组,比如大小为16的arr
,使用1
到16
的值填充它。在arr
上使用 shuffle 。遍历数组以填充二维数组,例如arr2
。
for(int i = 0; i < 16; i++){
arr2[i/4][i%4] = arr[i];
}