Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3059 connectés 

 


Dernière réponse
Sujet : [Java] Comment faire des nombres aléatoires ( URGENT ) !
rvmax Merci à vous,
 
j'avais deja testé une solution équivalente à la tienne bouyouman mais ca fait ramer mon pc à mort et planter le process. Donc j'ai essayer la solution de BifaceMcLeOD qui tourne vraiment bien...
 
merci je vais pouvoir finir mon jeu en Java.

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
rvmax Merci à vous,
 
j'avais deja testé une solution équivalente à la tienne bouyouman mais ca fait ramer mon pc à mort et planter le process. Donc j'ai essayer la solution de BifaceMcLeOD qui tourne vraiment bien...
 
merci je vais pouvoir finir mon jeu en Java.
BifaceMcLeOD bouyouman> Comme tu tires plusieurs nombres aléatoires, il est préférable de faire :

Code :
  1. Random  randomGenerator = new Random();


 
puis, pour tirer un nombre aléatoire entre 0 et 15 (inclus) :

Code :
  1. randomGenerator.nextInt(16);


 
Appeler Math.random() recrée un objet Random à chaque appel, c'est un peu bête (et aussi plus coûteux).

bouyouman oops un peu trop tard, la solution de Biface à l'air meilleure que la mienne...
bouyouman Euh moi je ferais comme ca, c'est surement pas la meilleure solution mais ca marche (pour des valeurs de 0 à 15, apres si tu tu fais ca pour beaucoup plus de valeurs ca marche pas au top).
 
poru avoir un tableau de valeurs de 0 à 15 sans repetition t'as qua faire:
int [] monTableau=melange(0,15);
 
-----------------------------------------------------------------
static int randomInt (int a,int b) //renvoie un int entre a et b inclus
{ double random1=Math.random();
 int temp=(int)((Math.abs((a-b-1))*random1)+a);
 return(temp);
}
 
static int [] melange(int a,int b)
{ /** initialisation variables **/
 int [] tableResultat=new int[Math.abs((a-b))+1];
 boolean [] tableTest=new boolean [Math.abs((a-b))+1]; // tableau permettant de ne pas repeter un nombre
 for(int i=0;i<tableTest.length;i++)
 { tableTest[i]=false;
 }
 boolean ecrit;
 
 /** construction du tableau final **/
 for(int i=0;i<tableResultat.length;i++)
 { do{
  ecrit=false;
  int valeurHasard=randomInt(a,b);
  if(tableTest[valeurHasard]==false)// si la valeur n'est pas deja dans le tableau resultat
   { tableResultat[i]=valeurHasard;
    tableTest[valeurHasard]=true;
    ecrit=true;
   }
  }while(ecrit==false);
 }
 return tableResultat;
}
-----------------------------------------------------------------
BifaceMcLeOD Il faut d'abord utiliser la classe java.util.Random pour générer des nombres aléatoires. Puis ensuite, l'algorithme suivant devrait suffire :

  • Tu crées un tableau t à 16 entrées tel que t[i]=i.
  • Pour chaque i parcourant t: tu tires un nombre aléatoire n compris entre 0 et 15 (inclus) et tu échanges t[i] et t[n].
  • Pour chaque i parcourant t: tu tires 2 nombres aléatoires n1 et n2 compris entre 0 et 15 (inclus) et tu échanges t[n1] et t[n2].

rvmax bon voila, comment mélanger des nombres de 0 à 15 aléatoirement sans prendre deux fois le même ????

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)