【发布时间】:2017-06-22 23:05:49
【问题描述】:
我目前正在尝试用 1-16 的 16 个值填充一个二维数组。我想用不重复的随机值填充数组。
例如,如果我有一个数组int array[4][4],我将如何通过一个循环填充数组,同时检查以确保另一个相同的随机值没有被放入数组中的另一个位置?
【问题讨论】:
-
最大尺寸是多少?
标签: c++ arrays multidimensional-array random
我目前正在尝试用 1-16 的 16 个值填充一个二维数组。我想用不重复的随机值填充数组。
例如,如果我有一个数组int array[4][4],我将如何通过一个循环填充数组,同时检查以确保另一个相同的随机值没有被放入数组中的另一个位置?
【问题讨论】:
标签: c++ arrays multidimensional-array random
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;并将其存储在另一个辅助二维数组中以供检查。你应该完成了。
【讨论】:
创建一个一维数组,比如大小为 16 的 arr,用从 1 到 16 的值填充它。在arr 上使用shuffle。遍历数组以填充二维数组,例如arr2。
for(int i = 0; i < 16; i++){
arr2[i/4][i%4] = arr[i];
}
【讨论】: