やあみんな、Javaのプログラミング入門の本を読んでいて、演習の1つはこれです:
経験的なシャッフルチェック。計算実験を実行して、シャッフルコードが宣伝どおりに機能することを確認します。コマンドライン引数MおよびNを取り、各シャッフルの前にa [i] = iで初期化されるサイズMの配列のNシャッフルを実行し、行iのようにM行M列のテーブルを出力するプログラムShuffleTestを記述します。すべてのjについて、位置jに巻き上げられた回数を示します。配列内のすべてのエントリはN/Mに近い必要があります。
さて、このコードはゼロのブロックを出力するだけです...
public class ShuffleTest2 {
public static void main(String[] args) {
int M = Integer.parseInt(args[0]);
int N = Integer.parseInt(args[1]);
int [] deck = new int [M];
for (int i = 0; i < M; ++i)
deck [i] = i;
int [][] a = new int [M][M];
for (int i = 0; i < M; i++) {
for (int j = 0; j < M; j++) {
a[i][j] = 0 ;
for(int n = 0; n < N; n++) {
int r = i + (int)(Math.random() * (M-i));
int t = deck[r];
deck[r] = deck[i];
deck[i] = t;
for (int b = 0; b < N; b++)
{
for (int c = 0; c < M; c++)
System.out.print(" " + a[b][c]);
System.out.println();
}
}
}
}
}
}
私は何が間違っているのですか?:(
ありがとう