Bonjour,
je cherche à génèrer des nombres aléatoires compris entre 1 et 10 ( bornes comprises) chaque nombre ayant environ la même fréquence d'apparition; pour celà j'ai écrit le code java dans lequel je génère 100000 nombres aléatoires compris entre 1 et 10 en comptant leur nombre d'apparitions
Voici les résultats obtenus au cours des deux essais successifs:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 public class Aleat{ public static void main ( String [ ] args ) { int nbOccurs [ ] = new int [ 10 ]; for ( int i=1;i<=100000;i++){ long nb = Math.round ( 9 * Math . random ( ) + 1 ) ; nbOccurs [ (int)nb -1 ] ++ ; } for ( int i=0;i<10;i++){ System.out.println ( i+1+":"+nbOccurs[i]); } } }
Les résultats sont incorrects pour les deux extrémités 1 et 10.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 C:\JPParsy\java\aleat>java Aleat 1:5664 2:11092 3:11114 4:11166 5:11054 6:11197 7:11089 8:10974 9:11210 10:5440 C:\JPParsy\java\aleat>java Aleat 1:5483 2:10990 3:11092 4:11182 5:10970 6:11145 7:11137 8:11074 9:11290 10:5637
Je pense que c'est un problème d'arrondi.
:
Partager