2010-12-01 17 views
1

J'essaie de créer une matrice de nombres doubles aléatoires. La matrice doit être de taille n x n et tous les nombres doivent être compris entre 1 et 100. J'essaie de la résoudre depuis des lustres maintenant et je sais que ça doit être quelque chose de si simple (comme c'est habituellement le cas).Comment puis-je afficher une matrice N x N de nombres aléatoires en Java?

Voici mon code:

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)); 
} 

Quand je lance le code que je reçois un réseau aléatoire répété n fois comme:

[[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]]

Je pense que je dois revenir au sommet de la boucle et ajouter le nouveau tableau ...? .. S'il vous plaît aider = (

Toute aide est très appréciée Merci

+0

pourriez-vous reformater votre fonction printRandomGraph() ? –

+0

Ouais, je ne suis pas sûr. Je parlais de cela plus tôt, mais je continuais à imprimer les mêmes quatre chiffres dans différents ordres ou avec des espaces vides dans les endroits? –

Répondre

0

Salut tout cela fournit la réponse que je cherchais

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

Avez-vous essayé quelque chose comme ceci:

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; 
} 

pour imprimer le graphique:

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]); 
     } 
    } 
} 

Pour Imprimer Graph avec équerres:

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(" ]"); 
     } 
    } 

En outre, cela semble un peu comme devoirs, si elle est, s'il vous plaît marquer comme si :)

+0

modification mineure: nextInt()% 100 donne des résultats non uniformément distribués entre 0 et 99. Si vous voulez une meilleure distribution aléatoire, utilisez 'nextInt (100) + 1'. Cela donnera des résultats uniformément distribués entre 1 et 100. – codelark

+0

Je viens de me rendre compte que j'ai fait quelque chose de stupide ... Mon type de retour sur randomArray devrait être une matrice pas un tableau ...! Je dois ensuite parcourir la matrice dans printGraph et retirer les éléments ?? –

+0

Je pense que vous étiez trop compliquer les choses si vous vouliez simplement imprimer le contenu du tableau. – npinti