Tirage sans remise
Fermé
xXfalcon68Xx
Messages postés
12
Date d'inscription
mercredi 18 juin 2014
Statut
Membre
Dernière intervention
19 juin 2014
-
Modifié par xXfalcon68Xx le 19/06/2014 à 10:01
xXfalcon68Xx Messages postés 12 Date d'inscription mercredi 18 juin 2014 Statut Membre Dernière intervention 19 juin 2014 - 19 juin 2014 à 11:38
xXfalcon68Xx Messages postés 12 Date d'inscription mercredi 18 juin 2014 Statut Membre Dernière intervention 19 juin 2014 - 19 juin 2014 à 11:38
3 réponses
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 751
19 juin 2014 à 09:34
19 juin 2014 à 09:34
Bonjour,
Mais que veux tu faire exactement?
Que signifie :
Tu ne procèdes jamais au tirage de x1 et x2? juste x dans le code donné...
Sinon, pour simplement répondre à ta question :
Mais que veux tu faire exactement?
Que signifie :
For i = 1 To x2 <> x1?
Tu ne procèdes jamais au tirage de x1 et x2? juste x dans le code donné...
Sinon, pour simplement répondre à ta question :
Randomize Timer x1 = CInt(9 * Rnd()) x2 = CInt(9 * Rnd()) Do While x2 = x1 Or x2 = 9 Or x1 = 9 x1 = CInt(9 * Rnd()) x2 = CInt(9 * Rnd()) Loop MsgBox x1 & " " & x2
xXfalcon68Xx
Messages postés
12
Date d'inscription
mercredi 18 juin 2014
Statut
Membre
Dernière intervention
19 juin 2014
19 juin 2014 à 10:00
19 juin 2014 à 10:00
For i = 1 To x2 <> x10
je voulais dire en gros qu il falait tirer un nombre jusqua ce que x2 ne soit pas egale a x2
je voulais dire en gros qu il falait tirer un nombre jusqua ce que x2 ne soit pas egale a x2
xXfalcon68Xx
Messages postés
12
Date d'inscription
mercredi 18 juin 2014
Statut
Membre
Dernière intervention
19 juin 2014
19 juin 2014 à 10:05
19 juin 2014 à 10:05
heu que x1 ne soit pas egale a x2
Modifié par eriiic le 19/06/2014 à 09:44
Pourquoi le Or x2 = 9 Or x1 = 9 ?
Rnd() est toujours < 1 non ? CInt(9 * Rnd()) ne peut être = 9
C'est bien parce qu'il n'y a pas grand chose à se mettre sous la dent... ;-)
eric
Modifié par pijaku le 19/06/2014 à 09:48
Et bien, curieusement, lors de mes tests, il s'avère qu'il m'a trouvé des 9.
Regarde ce test :
Oui, cette discussion arrive fort à propos. Je n'ai jamais réellement compris les résultats de ces tirages aléatoires et la nécessité de devoir y ajouter des tests pour obtenir les bons résultats, donc, parlons en.
19 juin 2014 à 10:30
Tu utilises CInt (conversion qui te fait un arrondi à l'entier le plus proche) au lieu de Int (partie entière).
En plus ça fausse la répartition. Le 0 se trouve sous-représenté de moitié du coup.
Au début j'avais pensé à des possibles erreurs d'arrondis suite à la multiplication. Mais j'avais lancé plusieurs boucles 1 to 100 000 000 sans jamais le constater.
Tant qu'on est dessus on peut raccourcir un peu :
eric
19 juin 2014 à 10:44
Je me suis fais un blocage (de quelques années déjà... pfff!) sur CInt au lieu de Int.
Bien vu et merci.
Et bien donc xXfalcon a sa réponse.
19 juin 2014 à 10:47
on met dit que do doit etre en fin d'instruction !