0

ユーザーが x、y、z の値と見つけたい点の数を入力するプログラムを作成することになっています。プログラムは x、y、z の値を取り、範囲 (-xlength から + xlength、-ylength から +ylength、-zlength から +zlength)。その範囲から、プログラムは 3D 配列に格納されたランダムな 3D データ ポイント (ユーザーが必要とする数) を返します。

3D配列から範囲を取得し、その中の数値をランダム化し、データポイントを出力する方法について混乱しています。(意味が分からなかったらすみません、本当に混乱しています)

誰かが私に何をする必要があるか、またはこれを完了するために3D配列を適切に使用する方法を説明してもらえますか?

PS。私はJavaを使用しています

4

2 に答える 2

1

最初は簡単に始めます。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 に答える