laupif
Messages postés14Date d'inscriptionlundi 28 mai 2007StatutMembreDernière intervention 7 avril 2010
-
25 sept. 2008 à 17:02
devilsfire -
8 juin 2018 à 14:45
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.
Ombitious_Developper
Messages postés2333Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention26 juillet 201339 26 sept. 2008 à 08:56
Salut:
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;
}
indiana_jules
Messages postés750Date d'inscriptionmardi 9 mars 2004StatutMembreDernière intervention23 décembre 200822 25 sept. 2008 à 17:51
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
laupif
Messages postés14Date d'inscriptionlundi 28 mai 2007StatutMembreDernière intervention 7 avril 2010 25 sept. 2008 à 18:09
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 ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_jojolemariole
Messages postés519Date d'inscriptionmercredi 21 mars 2007StatutMembreDernière intervention19 décembre 201625 25 sept. 2008 à 20:42
Salut,
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é.
laupif
Messages postés14Date d'inscriptionlundi 28 mai 2007StatutMembreDernière intervention 7 avril 2010 26 sept. 2008 à 15:29
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.