[Visual Basic 6] Nombre aléatoire qui n'est pas vraiment aléatoire...

Nombre aléatoire qui n'est pas vraiment aléatoire... [Visual Basic 6] - VB/VBA/VBS - Programmation

Marsh Posté le 09-11-2005 à 10:37:53    

Salut à tous.
Je développe un petit jeu de dés en VB6.
Le principe est qu'il y a 5 dés et que quand je clique sur un bouton "GO", les 5 dés prennent chacun une valeur aléatoire comprise entre 1 et 6.
Chaque dé est un TextBox, et ils sont nommés de1, de2, de3, de4, de5.
Le code de mon bouton GO est le suivant :  

Private Sub GO_Click()
de1.Text = Int(Rnd * 6) + 1
de2.Text = Int(Rnd * 6) + 1
de3.Text = Int(Rnd * 6) + 1
de4.Text = Int(Rnd * 6) + 1
de5.Text = Int(Rnd * 6) + 1
End Sub


Mon problème est le suivant:  
Je lance mon programme et j'effectue 10 lancers consécutifs. J'obtiens les résultats suivants:

Lancer 1 :  5.4.4.2.2
Lancer 2 :  5.1.5.5.5
Lancer 3 :  1.3.6.5.3
Lancer 4 :  6.6.1.6.3
Lancer 5 :  4.5.1.4.3
Lancer 6 :  2.4.4.2.2
Lancer 7 :  5.5.4.6.6
Lancer 8 :  2.5.6.2.4
Lancer 9 :  1.6.5.1.4
Lancer 10 : 1.1.5.2.1


Je quitte le programme et je le relance, puis j'effectue une nouvelle série de 10 lancers. J'obtiens cette fois les résultats suivants :

Lancer 1 :  5.4.4.2.2
Lancer 2 :  5.1.5.5.5
Lancer 3 :  1.3.6.5.3
Lancer 4 :  6.6.1.6.3
Lancer 5 :  4.5.1.4.3
Lancer 6 :  2.4.4.2.2
Lancer 7 :  5.5.4.6.6
Lancer 8 :  2.5.6.2.4
Lancer 9 :  1.6.5.1.4
Lancer 10 : 1.1.5.2.1


 
Les deux séries de lancers sont strictement identiques...
 
Je me demande donc ce qui cloche dans mon programme, parce que si je lance une seule fois le programme, je peux effectivement croire que les dés sont joués de manière aléatoire, mais si j'exécute plusieurs fois le programme, je trouve les mêmes résultats à chaque fois...
Est-ce normal? Comment remédier à ce problème?
 
Merci à tous...


Message édité par Profil supprimé le 09-11-2005 à 10:45:11
Reply

Marsh Posté le 09-11-2005 à 10:37:53   

Reply

Marsh Posté le 09-11-2005 à 10:53:00    

Utilise Randomize avant l'appel du premier rnd ...


---------------
Ce qui est affirmé sans preuve peut être nié sans preuve.
Reply

Marsh Posté le 09-11-2005 à 10:55:17    

C'est à dire???

Reply

Marsh Posté le 09-11-2005 à 10:58:16    

La fonction Randomize genere un "seed" basé sur le timer du système qui servira pour les fonctions "random" qui suivront. Comme le timer change tout le temps le nombre de base pour le random changera aussi.


---------------
Ce qui est affirmé sans preuve peut être nié sans preuve.
Reply

Marsh Posté le 09-11-2005 à 10:59:54    

ok. il suffit juste de ralouter Randomize avant le code... Merci.
Ca marche...

Reply

Marsh Posté le 10-11-2005 à 15:38:08    

petite note :
c'est une fonctionnalite bien pratique pour le test et le debugage que de pouvoir connaitre a l'avance quelle serie va etre obtenue ...
et de pouvoir la passer en 'vraie aleatoire' simplement ^^

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed