2010-12-01 12 views
1

私はランダムな倍数の行列を作成しようとしています。行列はn x nのサイズでなければならず、すべての数は1から100までの数でなければなりません。私は今年代にそれを整理しようとしています。ここで Javaで乱数のN×Nの行列を表示するにはどうすればよいですか?

は私のコードです:

public static void main(String[] args) { 
    PrintRandomGraph(RandomArray(4)); 
} 

private static double[] RandomArray(int n) { 
    double[] randomArray = new double[n]; 
    double[][] randomMatrix = new double [n][n]; 

    Random rand = new Random(); 
    rand.setSeed(System.currentTimeMillis()); 
    for (int i = 0; i < n; i++) { 

     Integer r = rand.nextInt()% 100; 
     randomArray[i] = Math.abs(r); 
     for (int j = 0; j < n; j++) { 
      Arrays.fill(randomMatrix, i, i+1, randomArray); 
     } 
    } 

    return randomArray; 
} 

private static void PrintRandomGraph(double[] inputArray) { 
    int n = inputArray.length; 
    double[] showArray = new double[n]; 
    double[][] showMatrix = new double [n][n]; 

    for (int j = 0; j < n; j++) { 
     for (int i = 0; i < n; i++) { 
      double r = inputArray[i]; 
      showArray[i] = r; 
      Arrays.fill(showMatrix, i, i+1, showArray); 
     } 
    } 

    System.out.println(Arrays.deepToString(showMatrix)); 
} 

私は、コードを実行すると、私は、ランダムな配列をn回繰り返すように取得:

[[63.0、97.0、64.0、75.0]、[63.0 、97.0、64.0、75.0]、[63.0、97.0、64.0、75.0]、[63.0、97.0、64.0、75.0]]は

は、私はforループの先頭に戻って追加する必要があると思います新しい配列...?すべてのヘルプははるかに高く評価された(=

を助けてくださいありがとう

+0

を探していた答えを提供し、あなたのprintRandomGraph()関数を再フォーマットができ? –

+0

うん、わかりません。私は以前これを嫌っていましたが、私はちょうど異なる順序で同じ4つの数字を印刷したか、場所に空白を入れましたか? –

答えて

0

こんにちはすべて、これが私が

private static double[][] RandomArray(int n) { 
     double[][] randomMatrix = new double [n][n]; 
     double[] randomArray = new double [n]; 
     Random rand = new Random(); 
      rand.setSeed(System.currentTimeMillis()); 

     for (int i = 0; i < n; i++) { 

      for (int j = 0; j < n; j++) { 
       Integer r = rand.nextInt()% 100; 
       randomMatrix[i][j] = Math.abs(r); 
      } 

     } 

     return randomMatrix; 
    } 


public static void main(String[] args){ 

     //PrintRandomGraph(RandomArray(5)); 
    System.out.println(Arrays.deepToString(RandomArray(5))); 
} 
3

あなたはこのような何かしようとしました:。。グラフを印刷するには

public void printGraph(double[][] array, int n) { 
    for (int i = 0; i < n; i++) {  
     for (int j = 0; j < n; j++) { 
      System.out.println(array[i][j]); 
     } 
    } 
} 

:グラフを印刷する

private static double[][] RandomArray(int n) { 
    double[][] randomMatrix = new double [n][n]; 

    Random rand = new Random(); 
    rand.setSeed(System.currentTimeMillis()); 
    for (int i = 0; i < n; i++) {  
     for (int j = 0; j < n; j++) { 
      Integer r = rand.nextInt()% 100; 
      randomMatrix[i][j] = Math.abs(r); 
     } 

    } 

    return randomMatrix; 
} 

を角かっこ付き:

public void printGraph(double[][] array, int n) { 
     for (int i = 0; i < n; i++) { 
      System.out.print(" [ "); 
      for (int j = 0; j < n; j++) { 
       System.out.print(array[i][j]); 
      } 
      //Put println instead of print here to have each row in a new line 
      System.out.print(" ]"); 
     } 
    } 
それがある場合

また、これはたくさんの宿題のように思える、そのようにそれをタグ付けしてください:)

+0

小修正:nextInt()%100は、0と99の間で不均一に分布した結果を返します。より良いランダム分布を望むなら、 'nextInt(100)+ 1'を使います。それは1から100の間で均一に分布した結果を与えるでしょう。 – codelark

+0

私は何か愚かなことをやったことに気がつきました... randomArrayの戻り値の型は配列ではなく行列でなければなりません...! それから、printGraphの行列を繰り返し処理し、要素を引き出す必要がありますか? –

+0

私はあなたが配列の内容を印刷したいと思えば、あなたは複雑すぎると思います。 – npinti

関連する問題