Random sans deux fois la meme valeur [Résolu]

Messages postés
14
Date d'inscription
lundi 28 mai 2007
Dernière intervention
7 avril 2010
- 25 sept. 2008 à 17:02 - Dernière réponse :  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.
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
Messages postés
2333
Date d'inscription
samedi 28 février 2004
Dernière intervention
26 juillet 2013
- 26 sept. 2008 à 08:56
3
Merci
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;
}

Merci Ombitious_Developper 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de Ombitious_Developper
Messages postés
750
Date d'inscription
mardi 9 mars 2004
Dernière intervention
23 décembre 2008
- 25 sept. 2008 à 17:51
0
Merci
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

Bon courage

le monde a des idées : la preuve, c'est qu'il y en a de mauvaises
ne comprends pas tout, mais je parle de tout : c'est ce qui compte
Commenter la réponse de indiana_jules
Messages postés
14
Date d'inscription
lundi 28 mai 2007
Dernière intervention
7 avril 2010
- 25 sept. 2008 à 18:09
0
Merci
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 ?
Commenter la réponse de laupif
Messages postés
519
Date d'inscription
mercredi 21 mars 2007
Dernière intervention
19 décembre 2016
- 25 sept. 2008 à 20:42
0
Merci
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é.

Je préfère quand même la première solution.
Commenter la réponse de cs_jojolemariole
Messages postés
14
Date d'inscription
lundi 28 mai 2007
Dernière intervention
7 avril 2010
- 26 sept. 2008 à 15:29
0
Merci
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.
Commenter la réponse de laupif
- 8 juin 2018 à 14:45
0
Merci
Bonjour je voudrait la meme chose mais sur python pouvez vous m'aider?
Commenter la réponse de devilsfire

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.