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

时间:2017-02-06 04:46:49

标签: c++ arrays multidimensional-array random

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

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

3 个答案:

答案 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,使用116的值填充它。在arr上使用 shuffle 。遍历数组以填充二维数组,例如arr2

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