【问题标题】:Fill a 2D array with non-repeating random numbers用非重复随机数填充二维数组
【发布时间】:2017-06-22 23:05:49
【问题描述】:

我目前正在尝试用 1-16 的 16 个值填充一个二维数组。我想用不重复的随机值填充数组。

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

【问题讨论】:

  • 最大尺寸是多少?

标签: c++ arrays multidimensional-array random


【解决方案1】:
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);

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

      • 这也正是我所需要的。非常感谢。
      猜你喜欢
      • 2012-07-27
      • 2014-05-10
      • 2017-04-17
      • 1970-01-01
      • 1970-01-01
      • 2020-02-25
      • 2012-08-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多