Bonjour, je souhaite générer des entiers aléatoirement entre un min et un max.
Pour cela, j'utilise la fonction nextInt de la classe Random.
Cette fonction génère des entiers entre 0 et le max passé en paramètre. Or je souhaiterai générer des entiers entre un min et un max passés en paramètres.

Le principe de ma fonction est le suivant : tant que le nombre généré entre 0 et le max par nextInt est inférieur au min, on regénère un nouveau nombre aléatoire :

voici le code :
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
public class Test_aleatoire_method {
 
	/*methode générant des nombres entiers aleatoires entre les bornes passées en paramètres
	 * @ param min, max
	 * @return alea, le nombre aleatoire généré
	 */
	public static int gen_aleat_born (int min, int max) {
		int alea;
		Random rando = new Random();
		alea=rando.nextInt(max);
 
		while (alea<min){
			alea=rando.nextInt(max);
		}
 
		return alea ;
	}
 
	public static void main(String[] args)
	{
 
 
 
	int min, max, nb, i;
 
	System.out.print("saisir la borne min de l'intervalle : ");
	min=Clavier.readInt ();
	System.out.println("------------------");
 
	System.out.print("saisir la borne max de l'intervalle : ");
	max=Clavier.readInt ();
	System.out.println("------------------");
 
	System.out.print("saisir le nombre de valeurs à génerer : ");
	nb=Clavier.readInt ();
	System.out.println("------------------");
 
	for (i=1;i<=nb;i++){
		System.out.println("valeur # " + i + " : " + gen_aleat_born(min,max));
	}
 
	}
}
voici les résultats :
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
saisir la borne min de l'intervalle : 10
------------------
saisir la borne max de l'intervalle : 20
------------------
saisir le nombre de valeurs à génerer : 500
------------------
valeur # 1 : 12
valeur # 2 : 12
valeur # 3 : 12
valeur # 4 : 12
valeur # 5 : 12
valeur # 6 : 12
valeur # 7 : 12
valeur # 8 : 12
valeur # 9 : 11
valeur # 10 : 11
valeur # 11 : 11
valeur # 12 : 11
valeur # 13 : 11
valeur # 14 : 11
valeur # 15 : 11
valeur # 16 : 11
valeur # 17 : 11
valeur # 18 : 11
valeur # 19 : 11
valeur # 20 : 11
valeur # 21 : 11
valeur # 22 : 11
valeur # 23 : 15
valeur # 24 : 15
valeur # 25 : 15
valeur # 26 : 15
valeur # 27 : 15
valeur # 28 : 15
valeur # 29 : 15
valeur # 30 : 15
valeur # 31 : 15
valeur # 32 : 15
valeur # 33 : 15
valeur # 34 : 15
valeur # 35 : 15
valeur # 36 : 15
valeur # 37 : 15
valeur # 38 : 18
valeur # 39 : 18
Comme vous pouvez le voir les nombres générés se suivent, comment faire pour obtenir des nombres générés aléatoirement entre un min et un max ??