Javaで2次元配列を作成しようとしていますが、1から6までの乱数で埋め込みます(編集:私は0と5を意味します。現在 - 私の謝罪)。しかし、グラフを扱う場合のように、数字を想像上のベスト・ライン・フィッティングよりも「ミラーリング」したいと思います。たとえば、indicies [1] [4]の数字が3.0の場合、[4] [1]の数字も3.0にしたいと思います。二次元配列をミラーリングする[Java]
:これは、現在のように印刷さRandom random = new Random();
int n = array.length;
double [][] populationArray = new double [n][n];
for (int i=0; i<populationArray.length; i++){
for (int j=0; j<populationArray[i].length; j++) {
populationArray[i][j] = random.nextInt(6);
if (populationArray[i][j] != 0) {
populationArray[j][i] = populationArray[i][j];
}
}
}
for (double[] p : populationArray) {
System.out.println(Arrays.toString(p));
}
:コードのスニペットは、私は現在、これを扱うには何の価値がある(私はArray.lengthと、コード内の別のポイントで6として確立している)のために、下記であることを持っています
[0.0, 1.0, 2.0, 1.0, 5.0, 2.0]
[1.0, 3.0, 5.0, 1.0, 3.0, 1.0]
[2.0, 5.0, 4.0, 1.0, 4.0, 1.0]
[1.0, 1.0, 1.0, 4.0, 2.0, 2.0]
[5.0, 3.0, 0.0, 2.0, 4.0, 4.0]
[2.0, 1.0, 0.0, 0.0, 4.0, 1.0]
数字のいくつかは反映されていますが、一部は表示されません(純粋に運がないものと思われます)。これのロジックには苦労しています。何か提案がありがたいです。もしこれが他のところで解決されていれば、私は自分で見つけることができないので、リンクも取ることになります。
ありがとうございます。
'if(populationArray [i] [j]!= 0)'があなたの問題だと思われます。それが反映されるかどうかは本質的にランダムです。また、以前に反映された値を乱数で上書きしています。 –
0.0の値を除いて、配列は実際にはミラーリングされているはずです。 if条件を削除しても問題ありません。 – reden
あなたのループはあなたの配列の*すべての*位置をカバーしますが、それらはすべての配列位置の半分*をカバーするだけです。 –