Vive le hasard !!

Signaler
Messages postés
64
Date d'inscription
jeudi 14 février 2002
Statut
Membre
Dernière intervention
22 janvier 2006
-
SuperClic
Messages postés
48
Date d'inscription
jeudi 8 août 2002
Statut
Membre
Dernière intervention
3 octobre 2002
-
petite note avant de commencer, si vous testez ce code, faites le en pas a pas (F8) sinon vous devinez ce qu'il se passe... :))

voici mon code :

Private Sub Form_Load()
Do
Var1 = Int((113 * Rnd) + 1)
Loop
End Sub

et voici, dans l'ordre, les valeurs les valeurs du soit-disant hasard : 80, 61, 66, 33, 35, 88, 2, etc.

toujours les memes, a chaque fois qu'on relance l'execution du prog...
alors si vous avez une explication, je suis preneur, si vous avez une autre méthode egalement, mais je parle de "vrai" hasard, sinon tchao bella, je me tir une balle lol

bonne prog
kevergeek ;)

4 réponses

Messages postés
36
Date d'inscription
mercredi 10 juillet 2002
Statut
Membre
Dernière intervention
3 septembre 2002

C'est tout à fait normal, la "graine" du Random n'a pas changé d'une exécution à l'autre.
Je ne sais pas si en VB, on peut la changer comme en C, mais généralement, on affecte à la graine la valeur du Now() converti en secondes écoulées depuis 1970 (ou un truc comme cela)...

C'était vraiment très intéressant... :big) MythoMAN dans une autre vie ! :clown)
Messages postés
68
Date d'inscription
jeudi 26 octobre 2000
Statut
Membre
Dernière intervention
17 avril 2009

Kevergeek: Avant de te tirer une balle, réfléchit un peu... comme l'a dit ragnagnac, il faut mettre à jour le random.
donc, si tu veux des valeurs différentes à chaque éxécution, tu met "randomize" au début de ton code.
rnd étant l'abréviation de randomize.
ton code est donc,

Private Sub Form_Load()
Randomize
Do
Var1 = Int((113 * Rnd) + 1)
Loop
End Sub

a bon entendeur

VincentSoft
Messages postés
64
Date d'inscription
jeudi 14 février 2002
Statut
Membre
Dernière intervention
22 janvier 2006

ok kool je vous remercie !
en fait, j'avais reussi a contourner le pb en trichant un peu :

For x = 1 To Second(Now)
Son = Int((17 * Rnd) + 1)
Next

lol ca résolvait le pb mais ct po très beau :(

merci encore

kevergeek ;)
Messages postés
48
Date d'inscription
jeudi 8 août 2002
Statut
Membre
Dernière intervention
3 octobre 2002

SuperClic

Un autre moyen encore plus simple basée sur la réponse de ragnagnac:

Private Sub Form_Load()
Randomize Timer
Do
Var1 = Int((113 * Rnd) + 1)
Loop
End Sub