CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[JAVA] Question sur l'aléatoire

Neyce
Neyce
Niveau 8
11 février 2014 à 15:44:29

Bonjour à tous ! Je continue mon apprentissage de mon ami Java ! et un prof m'a posé une colle ! C'est peut être simple mais je ne vois pas du tout comment m'y prendre, je m'explique :

Imaginons une variable int. Elle doit générer un nombre aléatoire entre 1 et 10. Pour le moment, ce n'est pas un soucis. Par contre, je veux que cette instruction se répéte 20 fois.

Mon premier réflexe fut une boucle, le probleme, c'est que cette variable ne génére pas 20 chiffres entre 1 et 10 comme escompté mais 20 fois le même chiffre aléatoire !

Exemple, je tombe sur 4, alors j'aurai :

4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4

et non, ce que je voudrais :

4 7 8 2 2 4 1 1 8 2 8 5 1 2 4 10 2 9 1 5

Une idée ? :)

FortCommeMeric
FortCommeMeric
Niveau 10
11 février 2014 à 16:50:48

On peut voir comment tu t'y es pris ?

Bartoniz
Bartoniz
Niveau 9
11 février 2014 à 16:55:39

Pour générer un nombre aléatoire à une variable n (par exemple) entre 1 et 10 il faut faire :

n = (int)(Math.random()*10)+1;

Le (int) permet de générer un entier.
Le math.random permet de générer un nombre entre 0 et 1.
Le *10 et le +1 permette d'établir les limites de ton intervalle, exemple avec *10 et +1 ton intervalle est [1;10].

Pour répéter ça 20 fois, t'as juste à faire un for ou un tant que avec un compteur (genre variable c) à laquelle on ajoute +1 à chaque tirage.

J'espère t'avoir aidé. :)

lokilok
lokilok
Niveau 16
11 février 2014 à 17:27:18

Ça retournera une valeur entre 1 et 11 la plutôt non ?

Bartoniz
Bartoniz
Niveau 9
11 février 2014 à 17:38:40

Non non, ça générera bien une valeur entre 1 et 10

Xnate
Xnate
Niveau 10
11 février 2014 à 17:39:19

Il faut faire quelque chose dans ce genre là :

for ( int i=0; i<20; i++ ) {
output.println(random.nextInt());
}

ou alors tu stockes les valeurs dans un tableau si tu veux t'en servir pour autre chose :(

lokilok
lokilok
Niveau 16
11 février 2014 à 17:44:12

Math. Random peut pas générer de 1 ?

SuPeRHuMaR
SuPeRHuMaR
Niveau 10
11 février 2014 à 17:47:46

"n = (int)(Math.random()*10)+1;"
"Ça retournera une valeur entre 1 et 11 la plutôt non ?"

:d) Non, car Math.random() renvoi une valeur entre 0 inclu et 1 exclu (précision en plus de Bartoniz), du coup en castant en int, même en supposant qu'on obtient la valeur maximale, elle sera toujours strictement plus petite que 1, donc en faisant cette valeur * 10, on ne pourra obtenir qu'au maximum 9, donc c'est bien + 1 si tu veux jusque 10 :)

Exemple de code pour ton problème :

int valeur;

for(int i = 0; i < 20; i++)
{
valeur = (int)(Math.random()*10) + 1;
System.out.print(val + " ");
}

Tu auras donc un affichage du type :
5 10 2 1 7 ... 3

Pour ton soucis de répétition, le 1er problème qui me vient à l'esprit, c'est que tu as dû mettre ta valeur à l'extérieur de la boucle, suivant mon code comme ceci par exemple :

int valeur = (int)(Math.random()*10) + 1;

for(int i = 0; i < 20; i++)
{
System.out.print(val + " ");
}

Tu auras donc un affichage du type :
5 5 5 5 5 ... 5

J'espère t'avoir aidé :)

lokilok
lokilok
Niveau 16
11 février 2014 à 18:00:26

Au cas où, je précise, je suis pas l'auteur.

dark_drow
dark_drow
Niveau 15
11 février 2014 à 18:00:39

En java on utilisera plutôt la classe Random et non la classe Math pour générer des nombres aléatoires : c'est plus simple et plus optimisé

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Internet
  • Macintosh
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment