Nombre aléatoire [Résolu]

Messages postés
5
Date d'inscription
samedi 11 avril 2015
Dernière intervention
11 avril 2015
- 11 avril 2015 à 12:28 - Dernière réponse :
Messages postés
5
Date d'inscription
samedi 11 avril 2015
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.
Afficher la suite 

Votre réponse

7 réponses

Messages postés
5
Date d'inscription
samedi 11 avril 2015
Dernière intervention
11 avril 2015
- Modifié par Yule35150 le 11/04/2015 à 14:59
0
Merci
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.
Messages postés
378
Date d'inscription
samedi 22 septembre 2012
Dernière intervention
13 août 2017
- 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.
Messages postés
5
Date d'inscription
samedi 11 avril 2015
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?
Commenter la réponse de Yule35150
Messages postés
378
Date d'inscription
samedi 22 septembre 2012
Dernière intervention
13 août 2017
- 11 avril 2015 à 15:42
0
Merci
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
Commenter la réponse de Zermelo
Messages postés
5
Date d'inscription
samedi 11 avril 2015
Dernière intervention
11 avril 2015
- 11 avril 2015 à 16:25
0
Merci
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
Messages postés
378
Date d'inscription
samedi 22 septembre 2012
Dernière intervention
13 août 2017
- 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.
Messages postés
5
Date d'inscription
samedi 11 avril 2015
Dernière intervention
11 avril 2015
- 11 avril 2015 à 17:06
Merci pour tout
Cordialement
Commenter la réponse de Yule35150

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.