Tirages aléatoires succesifs avec exclusion des résultats précédents

servela

XLDnaute Nouveau
Bonjour,

J'ai un petit problème. J'ai parcouru pas mal de pages sur le Web, mais je n'ai pas trouver vraiment de réponse, alors je fais appel à votre aide.

En faite, je souhaite simuler un tirage au sort d'un jeux de cartes.
Pour cela, j'utilise la fonction "ALEA.ENTRE.BORNES" de la façon suivante : =ALEA.ENTRE.BORNES(1;52)
J'ai un tableau sur une feuille annexe, pour lequel chaque nombre correspond à une carte :
1="2 de cœur"; 2="3 de cœur";...; 13="As de coeur"; 14 ="2 de carreau"; ...

J'aimerai effectuer 52 tirages successifs de la sorte, tout en sachant que une carte sortie du deck ne peut logiquement être une deuxième fois tiré. Et c'est bien là le problème.

J'ai beau me creuser la tête, je n'arrive pas à transcrire cela sous Excel.

Si le résultat dans ma première cellule de ALEA.ENTRE.BORNES(1;52) = 37
J'aimerais, pour le tirage suivant, agir de sorte que ALEA.ENTRE.BORNES(1;52 SAUF 37).
Ainsi de suite pour en finalité, lors du 52eme tirage, n'avoir plus qu'une seule possibilité " aléatoire "
Est-ce possible de faire cela ?

Si ça ne l'est pas, avez-vous une autre idée de comment pourrais-je procéder ? Ou bien, est-ce tout simplement impossible ?

D'avance, merci de votre aide

PS : Bonne année à toutes et tous ! :)
 
Dernière édition:
G

Guest

Guest
Re : Tirages aléatoires succesifs avec exclusion des résultats précédents

Bonjour,

Avec un fichier exemple ce serait plus rapide et plus simple de t'aider.
Par Alea.Entre.borne, je ne saurais faire mais par VBA, voici une petite macro qui mettra en A1:A52 de la feuille active tes 52 Numéros en ordre aléatoire unique:

Code:
Sub TirageUnique()
    Dim Tablo(1 To 52)
    Dim cpt As Byte, base As Byte, n As Byte, tmp As Byte, i As Integer
    For n = 1 To 52: Tablo(n) = n: Next
    cpt = UBound(Tablo): base = LBound(Tablo)
    Randomize Timer  
    For n = base To cpt
        i = Int((cpt - n + 1) * Rnd + base)
        tmp = Tablo(i)
        Tablo(i) = Tablo(cpt - n + base)
        Tablo(cpt - n + base) = tmp
    Next
    Range("A1").Resize(52) = Application.Transpose(Tablo)
End Sub

A+
 
Dernière modification par un modérateur:

david84

XLDnaute Barbatruc
Re : Tirages aléatoires succesifs avec exclusion des résultats précédents

Bonsoir, salut Hasco:),
ALEA.ENTRE.BORNES ne permet pas d'obtenir un tirage aléatoire sans doublon.
Ci-joint une possibilité : passer par une colonne intermédiaire utilisant cette fonction, puis une autre formule permettant de dégager ton tirage aléatoire sans doublon.
A+
 

Pièces jointes

  • Tirage_aléatoire_sans_doublon.xls
    46.5 KB · Affichages: 342

Membres actuellement en ligne

Statistiques des forums

Discussions
312 206
Messages
2 086 219
Membres
103 158
dernier inscrit
laufin