【问题标题】:Randomly Generating a 2d/3d Array随机生成 2d/3d 数组
【发布时间】:2010-11-02 18:18:18
【问题描述】:

我已经考虑了一段时间,但是随机生成 2-d 或可能 3-d 数组的好方法可能是什么。我不是在寻找特定的代码本身,而更多的是一个一般的想法或人们可能会想到的方式。

编辑:对不起,我打错了,我的意思是说你有一个充满空白空间的数组(2d 或 3d),我想在其中随机生成 Char *......随机(其他一切将是空白的)。就是我的意思。

【问题讨论】:

  • 你的意思不是一个 for 循环调用 rand?
  • 你想做什么。创建一个数组或生成随机数。
  • 我认为他可能想要制作一个数组或随机大小,而不仅仅是用随机数据填充一个固定大小的数组
  • char* 是什么意思?字符串?
  • 你之前想到了什么?你有什么顾虑?您需要什么对象布局。用随机数据填充结构并不难,所以要么你想得太难,要么你有额外的要求没有包含在问题中,以及如何解决它的想法让你很难过,但是你没有转发。信息越多越好。

标签: c++ c arrays random


【解决方案1】:
  1. 创建 2D/3D 数组
  2. 用随机数据填充它
  3. ?????
  4. 利润!

【讨论】:

    【解决方案2】:

    如果您尝试用大写 ASCII 字符稀疏地填充大型二维数组,则在 C 中将类似于以下内容:

    int array[A][B];
    
    for (int i = 0; i < SOMETHING; ++i)
    {
              //Note: Modulus will not give perfect random distributions depending on 
              //the values of A/B but will be good enough for some purposes.
         int x = rand() % A;  
         int y = rand() % B;
    
         char ch = rand() % 26 + 'A';
         array[x][y] = ch;
    }
    

    【讨论】:

    • 谢谢,这正是我想要的
    【解决方案3】:

    只需使用rand() 生成一堆随机值并将它们排列成一个数组。

    【讨论】:

      【解决方案4】:

      如果您希望随机性在 2 或 3 维上具有连续性,那么您要寻找的概念是“噪声”。

      【讨论】:

        【解决方案5】:

        我知道你不想要整个代码,但实际上并没有那么多代码。

        int array[A][B][C];
        std::generate_n(array[0][0], A*B*C, rand);
        

        【讨论】:

          【解决方案6】:

          这不是您要求的确切答案,但无论如何都可能有用。有时当我想生成一个大的随机字符串时,我会执行以下操作: 1. 生成一个小的随机字符串,比如 3 或 4 个字符的长度 2. 使用您选择的算法(MD5、SHA1 等)获取其哈希

          通过这种方式,您可以生成相当长的“随机”字符串。一旦你有了很长的随机字符串,你就可以把它分成更小的字符串或整个使用它。随机性的完整性取决于短初始字符串的随机性。

          【讨论】:

            【解决方案7】:

            这应该可行:

            int *ary,   /* Array */
                x_size, /* X size of the array */
                y_size; /* Y size of the array */
            
            x = rand() % MAX_SIZE;
            y = rand() % MAX_SIZE;
            
            ary = malloc(sizeof(int) * (x * y));
            
            ary[1][1] = 1;
            

            如果 [][] 索引不起作用,您可能需要使用

            *(ary + (x_size * X_COORD) + Y_COORD)
            

            访问元素[X_COORD][Y_COORD]。我不完全确定 c99 是否支持该语法。

            对不起,我想不出没有代码的办法。

            编辑:很抱歉造成混淆 - 认为您需要一个随机大小的数组。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2018-09-07
              • 1970-01-01
              • 2022-01-20
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2021-05-15
              相关资源
              最近更新 更多