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

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]);
        }
    }
}
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
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
Les résultats sont incorrects pour les deux extrémités 1 et 10.

Je pense que c'est un problème d'arrondi.

: