Nombre aléatoire [Résolu]

Signaler
Messages postés
5
Date d'inscription
samedi 11 avril 2015
Statut
Membre
Dernière intervention
11 avril 2015
-
Yule35150
Messages postés
5
Date d'inscription
samedi 11 avril 2015
Statut
Membre
Dernière intervention
11 avril 2015
-
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

Messages postés
5
Date d'inscription
samedi 11 avril 2015
Statut
Membre
Dernière intervention
11 avril 2015

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és
378
Date d'inscription
samedi 22 septembre 2012
Statut
Membre
Dernière intervention
13 août 2017
13
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és
5
Date d'inscription
samedi 11 avril 2015
Statut
Membre
Dernière intervention
11 avril 2015

Bonjour,
Merci Zermelo pour vos remarques. En ce qui concerne la coloration syntaxique, modification effectuée. Pour Randomize(), quelle instruction faudrait 'il utiliser?
Messages postés
378
Date d'inscription
samedi 22 septembre 2012
Statut
Membre
Dernière intervention
13 août 2017
13
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
Messages postés
5
Date d'inscription
samedi 11 avril 2015
Statut
Membre
Dernière intervention
11 avril 2015

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
Zermelo
Messages postés
378
Date d'inscription
samedi 22 septembre 2012
Statut
Membre
Dernière intervention
13 août 2017
13
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.
Yule35150
Messages postés
5
Date d'inscription
samedi 11 avril 2015
Statut
Membre
Dernière intervention
11 avril 2015

Merci pour tout
Cordialement