Je voudrais savoir si il est possible d'obtenir plusieurs chiffres aleatoires sans pouvoir obtenir deux fois le meme chiffre. je m'explique je veux un obtenir les nombres de 1 a 52 dans les desordre. En utilisant la fonction random 52 fois il m'arrive d'obtenir deux fois le meme chiffre je voulais savoir si c'est possible de faire autrement. Merci d'avance.
Utilises cette snippet:
http://www.codyx.org/snippet_remplir-tableau-avec-nombres-aleatoires-distincts_555.aspx
import java.util.Random;
/**
* Cette méthode génére une séquence de nombre aléatoires deux à deux distincts.
* L'avantage de cette méthode utilitaire est le fait qu'elle génére des nombres
* aléatoires distincts deux à deux d'une façon déterministe.
* Elle évite le besoin de faire des boucles imbriquées pour teste si un tel entier
* existe déja dans la séquence.
*
* Supposons qu'on fournit la valeur 5 comme paramètre à cette méthode,
* alors celle-ci peut générée la séquence: [0, 4, 3, 1, 2].
*
* @param n - Nombre total des éléments de la séquence à générer.
* @ return - Retourne la séquence des nombres aléatoires générée.
*/
public static int[] randomize(int n) {
int[] returnArray = null;
if (n > 0) {
returnArray = new int[n];
for (int index = 0; index < n; ++index) {
returnArray[index] = index;
}
Random random = new Random(System.currentTimeMillis());
for (int index = 0; index < n; ++index) {
int j = (int) (random.nextDouble() * (n - index) + index);
int tmp = returnArray[index];
returnArray[index] = returnArray[j];
returnArray[j] = tmp;
}
}
return returnArray;
}
Bonsoir,
quelle méthode utilises-tu ? Math.random() ? Random ? Le second étant meilleur. Au pire, tu peux créer ton propre algo aléatoire, qui se passerait sur l'un des deux, et qui se souviendrait des résultats obtenus
j'utilise Random. Le probleme avec mon propre algoritm est que cette fonction random doit melanger des cartes donc si j'utilise mon propre algo cela ne risque pas de faire un melange semblable a tout les coups ?
Tu mets tes 52 cartes dans une liste. Ensuite tu prends un nombre au hasard entre 0 et 51 et tu enlèves la carte correspondante de la liste, puis tu recommences avec un nombre entre 0 et 50 etc etc...
Sinon pour une jeu de carte sur calculatrice que j'avais fait, je prenais deux nombres entre 1 et 52, par exemple (17 et 24) et j'inversais les deux cartes, je recommençais plusieurs fois jusqu'à ce que le tas soit mélangé.
Je préfère quand même la première solution.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Actuellement j'ai un system ou les cartes sont inverser de maniere defini, c'est le nombre de fois que l'on va changer l'ordre des cartes qui va etre aleatoire. Je vous remercie de vos reponses.