Vive le hasard !!

Kevergeek Messages postés 64 Date d'inscription jeudi 14 février 2002 Statut Membre Dernière intervention 22 janvier 2006 - 14 août 2002 à 17:30
SuperClic Messages postés 48 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 3 octobre 2002 - 16 août 2002 à 15:39
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

ragnagnac Messages postés 36 Date d'inscription mercredi 10 juillet 2002 Statut Membre Dernière intervention 3 septembre 2002
14 août 2002 à 17:33
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)
0
Vincentsoft Messages postés 68 Date d'inscription jeudi 26 octobre 2000 Statut Membre Dernière intervention 17 avril 2009
14 août 2002 à 17:44
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
0
Kevergeek Messages postés 64 Date d'inscription jeudi 14 février 2002 Statut Membre Dernière intervention 22 janvier 2006
14 août 2002 à 17:51
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 ;)
0
SuperClic Messages postés 48 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 3 octobre 2002
16 août 2002 à 15:39
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
0