2017-04-22 2 views
-3

J'essaie de générer 100 nombres aléatoires entre 0 et 9, et affiche le nombre pour chaque nombreComptage de 100 nombres aléatoires

Cette solution est-elle correcte? Je veux m'améliorer, qu'aurais-je pu faire de mieux?

java.util.Scanner k = new Scanner(System.in); 

int[] numbers = new int[100]; 

for (int i = 0;i<numbers.length;i++) 
{ 
    numbers[i] = (int) (Math.random() * 10); 
} 

int [] counts = new int[10]; 

for (int i = 0;i<numbers.length;i++) 
{ 
    counts[numbers[i]%numbers.length]++; 
} 

for (int i=0;i<counts.length;i++) 
{ 
    if (counts[i]>1) 
     System.out.println(i+1+" Generates: "+(counts[i])+" times"); 
    else 
     System.out.println(i+1+" Generated: "+(counts[i])+" time"); 
} 
+2

Sauf si vous avez un problème/erreur dans votre code, il est généralement préférable de poster ce genre de question sur CodeReviw: https://codereview.stackexchange.com/ – sorifiend

+0

S'il vous plaît clarifier le titre. –

+0

Je vote pour fermer cette question hors-sujet parce qu'elle appartient à [codereview.se] –

Répondre

0

Je pense que vous avez overthought cela, vous avez seulement besoin d'un tableau - de 10 valeurs (pour la gamme 0 - 9 il y a dix valeurs uniques), générer une centaine de valeurs dans cette plage, et augmenter la valeur du tableau (c'est votre compte des nombres), puis boucle pour afficher. Quelque chose comme,

int[] numbers = new int[10]; 
for (int i = 0; i < 100; i++) { 
    int ndx = (int) (Math.random() * numbers.length); 
    numbers[ndx]++; 
} 
for (int i = 0; i < numbers.length; i++) { 
    System.out.printf("%d was generated %d times.%n", i, numbers[i]); 
} 

Et en Java 8+ vous pouvez écrire ci-dessus avec IntStream et lambda (s) comme

int[] numbers = new int[10]; 
IntStream.range(0, 100).forEach(// 
     x -> numbers[(int) (Math.random() * numbers.length)]++); 
IntStream.range(0, numbers.length) // 
     .forEachOrdered(x -> System.out.printf(// 
       "%d was generated %d times.%n", x, numbers[x])); 
+0

Wow grande solution, vous devez être un pro! – george129