如何在二维数组中选取一个随机元素
问题描述:
好的,我想在二维数组中选取一个随机点,以便填充它。我见过如何为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个凸起的边界两侧,以防止任何物体会(部分外部或网格。没有什么需要吗?
答
返回如果电网规模的M by N
- 生成随机数之间
0 and M-1
说我 - 生成另一个随机之间
0 and N-1
说Ĵ
(I,J)将2D阵列的随机元素
答
数组在这里玩什么?
本质上,任务是挑... 随机整数2D坐标。
所以,如果你想要两个坐标,说0...W-1
和j
i
,0...H-1
,只需绘制两个随机整数。如果您需要更高的维度,请抽取更多的随机数。您可以访问array[i][j]
。
然而,在大多数语言中,数组可能是不规则的,即行/列的长度可能不同。然而,这不过是一样的...
这个,再加上如果你想检查点是否已经标记,在循环中进行生成,检查具有随机生成坐标的点是否已经被标记,如果是的,重复,如果没有,标记并离开循环 – cypherabe 2012-01-06 15:46:18
或者,您可以将二维阵列平坦化为M×N 1维阵列。它只是让您定义连续指标是首先在水平轴还是垂直轴上增加。 (有些人可能会不同意,但我发现一维数组更容易处理) – slyfox 2012-01-06 15:48:17
或者你在'0'中绘制一个随机数到'M * N-1'并计算i的x和y位置。请注意,在大多数语言中,二维数组可能不齐整。 – 2012-01-07 11:19:01