0

我们应该创建一个程序,用户将在其中输入 x、y 和 z 值以及他们想要查找的点数,然后程序将获取 x、y 和 z 值并创建一个范围(-xlength 到 + xlength,-ylength 到 +ylength,-zlength 到 +zlength)。在该范围内,程序将返回存储在 3D 数组中的随机 3D 数据点(无论用户想要多少)。

我对如何从 3D 数组中获取范围并在其中随机化一个数字,然后输出数据点感到困惑。(对不起,如果它没有多大意义,我真的很困惑自己)

有人可以向我解释需要做什么或我应该如何正确使用 3D 数组来完成这个吗?

PS。我使用java

4

2 回答 2

1

我会先从简单开始:解决一维案例,然后扩展您的解决方案以涵盖所有 3 个维度。

你知道用户会给你一个维度的范围,我们称之为xlength。你知道你的数组中必须有 2 * xlength 数字。你也知道数组索引必须从 0 开始。所以你必须有一个映射,来自 [0..2*xlength] 的元素应该映射到 [-xlength..xlength]

所以,考虑到这一点,让我们解决这个问题:

int xlength = 5;/* input by user */
int[] items = new int[xlength * 2];
Random r = new Random();   

for (int i = 0, i < numberOfElementsToChoose; i++)
{
    int index = r.nextInt(items.length); // choose a random index

    // print the element, index will be index - xlength (to map from 0 to 2 * xlength to -xlength to xlength)
}
于 2013-09-17T01:10:20.073 回答
0

“在该范围内,程序将返回存储在 3D 数组中的随机 3D 数据点(无论用户想要多少)。” 听起来很奇怪......如何将随机数据放入 3 维数组中,为什么它是 3D 的?

我想到的唯一合理的方法是稀疏数组:

array[i][j][k] == 1 if the point (i,j,k) *is in the array* and 0 if it *is not there*.

您需要在“-xlength 到 +xlength、-ylength 到 +ylength、-zlength 到 +zlength”范围内生成具有整数坐标的随机 n 个点,并将数组中的正确值设置为 1。为什么?没有线索...

于 2013-09-17T01:15:28.217 回答