Yule35150
Messages postés5Date d'inscriptionsamedi 11 avril 2015StatutMembreDernière intervention11 avril 2015
-
Modifié par Yule35150 le 11/04/2015 à 12:53
Yule35150
Messages postés5Date d'inscriptionsamedi 11 avril 2015StatutMembreDernière intervention11 avril 2015
-
11 avril 2015 à 17:06
Bonjour,
Mon projet se compose de 16 boutons. A chaque bouton bouton est attribué de façon aléatoire un nombre entre 1 et 8 de façon à constituer des doublons puisque j'ai 16 boutons au total.
Mon problème est que mon code n'est pas si aléatoire que cela car chaque tirage est le même. Je m'explique: le premier sera toujours identique, ainsi que le deuxième et ainsi de suite...
Voici mon code:
Option Explicit On
Option Strict On
Public Class Form1
Private Sub Button17_Click(sender As Object, e As EventArgs) Handles Button17.Click
Dim Suite As Integer() = {0, 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8}
Dim Random As New Random
Dim Mélange(17) As Integer
For i As Integer = 1 To 17
Dim Distribution As Integer = CInt(Int((17 - i - 1) * Rnd() + 1))
Dim Ecart As Integer = 1
For j As Integer = 1 To 17
If Mélange(j) = 0 Then
If Ecart = Distribution Then
Mélange(j) = Suite(i)
Exit For
End If
Ecart = Ecart + 1
End If
Next
Next
For i As Integer = 1 To 16
Controls("Button" & i.ToString).Text = CStr(Mélange(i))
Next
End Sub
End Class
Je ne comprends pas ou est mon erreur.
Je remercie d'avance les personnes qui prendront le temps de ma lire et de consacrer par la même occasion de leur temps pour me répondre.
J'espère avoir été clair dans mes explications et surtout avoir bien respecté les règles de ce site.
Toutes mes excuses j'ai trouvé mon erreur. Il manquait l'instruction Randomize() juste après Mélange(j) = Suite(i)
Voici le code:
Option Explicit On Option Strict On Public Class Form1
Private Sub Button17_Click(sender As Object, e As EventArgs) Handles Button17.Click Dim Suite As Integer() = {0, 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 6, 7, 8} Dim Random As New Random Dim Mélange(17) As Integer For i As Integer = 1 To 17 Dim Distribution As Integer = CInt(Int((17 - i - 1) * Rnd() + 1)) Dim Ecart As Integer = 1 For j As Integer = 1 To 17 If Mélange(j) = 0 Then If Ecart = Distribution Then Mélange(j) = Suite(i) Randomize() Exit For End If Ecart = Ecart + 1 End If Next Next For i As Integer = 1 To 16 Controls("Button" & i.ToString).Text = CStr(Mélange(i)) Next End Sub End Class
Par contre, mon code est'il bien logique et construit correctement?
Merci d'avance.
Zermelo
Messages postés377Date d'inscriptionsamedi 22 septembre 2012StatutMembreDernière intervention13 août 201714 11 avril 2015 à 14:51
Bonjour.
Vous n'avez toujours pas utilisé la coloration syntaxique, qui consiste à sélectionner votre code puis cliquer sur le symbole <> en haut et à droite de la zone d'écriture. D'autre part, vous n'avez pas respecté le vb.net pur et dur. Randomize vient de vb6.
Yule35150
Messages postés5Date d'inscriptionsamedi 11 avril 2015StatutMembreDernière intervention11 avril 2015 11 avril 2015 à 15:02
Bonjour,
Merci Zermelo pour vos remarques. En ce qui concerne la coloration syntaxique, modification effectuée. Pour Randomize(), quelle instruction faudrait 'il utiliser?
Zermelo
Messages postés377Date d'inscriptionsamedi 22 septembre 2012StatutMembreDernière intervention13 août 201714 11 avril 2015 à 15:42
Bonjour.
Pour être un vébétiste bien élevé et propre sur lui, il faut tout d'abord ouvrir My Project, et là,
a) dans l'onglet Compiler, mettre
Explicit à ON,
Strict à ON,
Infer à OFF
b) dans l'onglet Références, supprimer Microsoft.VisualBasic
Pour remplacer Randomize(), je vous suggère d'ouvrir votre explorateur d'objets, et d'y chercher la classe Random. Mais ce ne sera pas un remplacement terme à terme.
11 avril 2015 à 14:51
Vous n'avez toujours pas utilisé la coloration syntaxique, qui consiste à sélectionner votre code puis cliquer sur le symbole <> en haut et à droite de la zone d'écriture. D'autre part, vous n'avez pas respecté le vb.net pur et dur. Randomize vient de vb6.
11 avril 2015 à 15:02
Merci Zermelo pour vos remarques. En ce qui concerne la coloration syntaxique, modification effectuée. Pour Randomize(), quelle instruction faudrait 'il utiliser?