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

  FORUM HardWare.fr
  Programmation

  [Java] Comment faire des nombres aléatoires ( URGENT ) !

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Java] Comment faire des nombres aléatoires ( URGENT ) !

n°39878
rvmax
Posté le 15-06-2001 à 00:02:32  profilanswer
 

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

mood
Publicité
Posté le 15-06-2001 à 00:02:32  profilanswer
 

n°39882
BifaceMcLe​OD
The HighGlandeur
Posté le 15-06-2001 à 00:57:50  profilanswer
 

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].

n°39883
bouyouman
Posté le 15-06-2001 à 01:01:52  profilanswer
 

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;
}
-----------------------------------------------------------------

n°39885
bouyouman
Posté le 15-06-2001 à 01:05:12  profilanswer
 

oops un peu trop tard, la solution de Biface à l'air meilleure que la mienne...

n°39886
BifaceMcLe​OD
The HighGlandeur
Posté le 15-06-2001 à 01:08:59  profilanswer
 

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).

n°39909
rvmax
Posté le 15-06-2001 à 09:40:21  profilanswer
 

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.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [Java] Comment faire des nombres aléatoires ( URGENT ) !

 

Sujets relatifs
[JAVA] récupérer un bout de Stringancre en script java!
[BIBLIOLINK JAVA]ouvrir un fichier en java
[JAVA] \n, petite question bête[java] awt panel
[VISUAL JAVA] application mode console, rien ne s'afficheURGENT!!!!!JAVA
[Java Script]comment ne pas afficher la croix rouge.... 
Plus de sujets relatifs à : [Java] Comment faire des nombres aléatoires ( URGENT ) !


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR