2012-01-06 131 views
0

好的,我想在二维数组中选取一个随机点,以便填充它。我见过如何为1d数组做这件事,并想知道在2d数组中如何做到这一点。我所看到的关于这种方法的一点是,同样的立场再次出现,这是一个小问题,但我不知道如何做到这一点。 2d数组本质上是一个网格,尺寸是x和y坐标。和随机要素选择的边界内的点(这是用户选择的,但对于这个问题的目的,可以是30×如何在二维数组中选取一个随机元素

编辑:

import java.util.Random; 
class pickRand{ 
public static String get (int x, int y){ 
    int rndx = generator.nextInt(x) + 2; 
    int rndy = generator.nextInt(y) + 2; 


} 
} 

所以将这项工作中,x和y将对应用户生成的数量,并有2个凸起的边界两侧,以防止任何物体会(部分外部或网格。没有什么需要吗?

回答

3

返回如果电网规模的M by N

  • 生成随机数之间0 and M-1
  • 生成另一个随机之间0 and N-1Ĵ

(I,J)将2D阵列的随机元素

+0

这个,再加上如果你想检查点是否已经标记,在循环中进行生成,检查具有随机生成坐标的点是否已经被标记,如果是的,重复,如果没有,标记并离开循环 – cypherabe 2012-01-06 15:46:18

+2

或者,您可以将二维阵列平坦化为M×N 1维阵列。它只是让您定义连续指标是首先在水平轴还是垂直轴上增加。 (有些人可能会不同意,但我发现一维数组更容易处理) – slyfox 2012-01-06 15:48:17

+0

或者你在'0'中绘制一个随机数到'M * N-1'并计算i的x和y位置。请注意,在大多数语言中,二维数组可能不齐整。 – 2012-01-07 11:19:01

0

数组在这里玩什么?

本质上,任务是挑... 随机整数2D坐标

所以,如果你想要两个坐标,说0...W-1ji,0...H-1,只需绘制两个随机整数。如果您需要更高的维度,请抽取更多的随机数。您可以访问array[i][j]

然而,在大多数语言中,数组可能是不规则的,即行/列的长度可能不同。然而,这不过是一样的...

相关问题