随机生成2d / 3d数组

时间:2010-11-02 18:18:18

标签: c++ c arrays random

我已经考虑了一段时间,但是对于随机生成2-d或可能3-d阵列来说,这可能是一个很好的方法。我不是在寻找具体的代码本身,而是更多的只是一个人们可能想到的一般想法或方式。

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

7 个答案:

答案 0 :(得分:2)

  1. 创建2D / 3D阵列
  2. 使用随机数据填写
  3. ?????
  4. 利润!

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

这应该有效:

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是否支持该语法。

对不起,我想不出没有代码说出来的方法。

编辑:很抱歉这个混乱 - 认为你需要一个随机大小的数组。

答案 5 :(得分:0)

如果你试图用大写的ASCII字符稀疏地填充一个大的2D数组,它将类似于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;
}

答案 6 :(得分:0)

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

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