Nombre aléatoire

Résolu
Yule35150 Messages postés 5 Date d'inscription samedi 11 avril 2015 Statut Membre Dernière intervention 11 avril 2015 - Modifié par Yule35150 le 11/04/2015 à 12:53
Yule35150 Messages postés 5 Date d'inscription samedi 11 avril 2015 Statut Membre Dernière intervention 11 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.

Au plaisir d'avoir une réponse.

EDIT: Correction de la coloration syntaxique.

3 réponses

Yule35150 Messages postés 5 Date d'inscription samedi 11 avril 2015 Statut Membre Dernière intervention 11 avril 2015
Modifié par Yule35150 le 11/04/2015 à 14:59
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.
0
Zermelo Messages postés 378 Date d'inscription samedi 22 septembre 2012 Statut Membre Dernière intervention 13 août 2017 14
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.
0
Yule35150 Messages postés 5 Date d'inscription samedi 11 avril 2015 Statut Membre Dernière intervention 11 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?
0
Zermelo Messages postés 378 Date d'inscription samedi 22 septembre 2012 Statut Membre Dernière intervention 13 août 2017 14
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.

Cordialement
0
Yule35150 Messages postés 5 Date d'inscription samedi 11 avril 2015 Statut Membre Dernière intervention 11 avril 2015
11 avril 2015 à 16:25
Re bonjour Zermelo,

Je vous remercie de tous vos conseils, j'apprécie vraiment l'aide que vous vous m'avez apportée ainsi que le temps que vous m'avez consacré.

Cordialement
0
Zermelo Messages postés 378 Date d'inscription samedi 22 septembre 2012 Statut Membre Dernière intervention 13 août 2017 14
11 avril 2015 à 17:04
Si vous considérée close cette discussion, il vous est demandé de la déclarée résolue. Cela se fait juste avant votre demande d'aide.
0
Yule35150 Messages postés 5 Date d'inscription samedi 11 avril 2015 Statut Membre Dernière intervention 11 avril 2015
11 avril 2015 à 17:06
Merci pour tout
Cordialement
0
Rejoignez-nous