OVH Cloud OVH Cloud

Valeur aléatoire

2 réponses
Avatar
bartoli.nicolas
Bonjour,

J'utilise dans une boucle le constructeur Random pour creer une valeur
aléatoire que j'appel avec nextInt entre 1 et 3 mais malheureusement
il me retourne tjrs la meme valeur.
Si il prend 3, il utilisera 3 a chaque tour de boucle, si il prend 2
il gardera 2 et meme chose pour 1.

Random rand = new Random();
int gd = 0;
tant que(condition)
{
gd = rand.nextInt(3)+1;
}


Comment pourrais je éviter ca ?

merci d'avance

2 réponses

Avatar
Olivier Exbrayat
Voici une ligne de code qui fonctionnera mieux pour ton exemple :

gd = (rand.nextInt() % 3) + 1;

cf :
http://java.sun.com/j2se/1.4.2/docs/api/java/util/Random.html#nextInt(int)

"Nico82" a écrit dans le message de
news:
Bonjour,

J'utilise dans une boucle le constructeur Random pour creer une valeur
aléatoire que j'appel avec nextInt entre 1 et 3 mais malheureusement
il me retourne tjrs la meme valeur.
Si il prend 3, il utilisera 3 a chaque tour de boucle, si il prend 2
il gardera 2 et meme chose pour 1.

Random rand = new Random();
int gd = 0;
tant que(condition)
{
gd = rand.nextInt(3)+1;
}


Comment pourrais je éviter ca ?

merci d'avance


Avatar
Damien Lecan
J'utilise dans une boucle le constructeur Random pour creer une valeur
aléatoire que j'appel avec nextInt entre 1 et 3 mais malheureusement
il me retourne tjrs la meme valeur.
Si il prend 3, il utilisera 3 a chaque tour de boucle, si il prend 2
il gardera 2 et meme chose pour 1.

Random rand = new Random();
int gd = 0;
tant que(condition)
{
gd = rand.nextInt(3)+1;
}
Comment pourrais je éviter ca ?
J'obtiens ça avec ton algo :

3, 1, 1, 1, 3, 2, 1, 3, 2, 1, 3, 2, 3, 3, 3, 3, 1, 1, 3, 1, 2, ...
J'utilise le JDK 1.4.2

Essaies d'initialiser le Random avec un timestamp, genre
Random rand = new Random(System.currentTimeMillis());


Damien