1

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...

Developpeur informatique débutant - Roulibouli's blog

2

il faut utiliser une fonction de 'randomize' qui te permettra de reinitialiser ta fonction de generation de nombres aleatoires a chaque lancement du programme.
avatar
納 豆パワー!
I becamed a natto!!!1!one!

3

En gros, quand ton programme a ete compile, une valeur a ete attribuee a la fonction random. Si cette valeur est toujours la meme, la serie obtenue sera toujours la meme. Pour ca il y a une fonction qui attribue une valeur en fonction de l'horloge de ton processeur a la fonction random de telle sorte qu'elle ne soit jamais la meme et que tes tirages soient differents.
Je pense qu'un seul appel est necessaire.
avatar
納 豆パワー!
I becamed a natto!!!1!one!

4

Private Sub fonction_pouet()
    Dim intResult As Integer
    Randomize
    intResult = Int((6 * Rnd) + 1)
...
End Sub
avatar
納 豆パワー!
I becamed a natto!!!1!one!

5

Je te remercie, ca marche...
Developpeur informatique débutant - Roulibouli's blog