Tirage aléatoire

Contenu du snippet

C'est en voyant ce post, que j'ai eu envie d'approndir la question:

http://codes-sources.commentcamarche.net/forum/affich-10066446-une-serie-de-nombre-aleatoire

Voici 5 manières de faire un tirage aléatoire:
Tableau simple
Tableau dynamique
Collection
Collection dynamique
Avec une listbox dynamique a laquelle j'ai ajouté un tirage du loto avec 5 numeros plus numéro complémentaire pour le fun:

Ajout d'une  TextBox1 multiline

 <code>'Avec tableau simple
 
    Sub Tirage_aléatoire()
        Dim montableau() As String ' Tableau contenant les 9 numeros
        Dim nombre As Long ' Nombre de numeros
        Dim n As Long, i As Long ' Variables de travail
        TextBox1.Text = ""
        nombre = 9
        ReDim montableau(CInt(nombre))

        montableau(0) = "1"
        montableau(1) = "2"
        montableau(2) = "3"
        montableau(3) = "4"
        montableau(4) = "5"
        montableau(5) = "6"
        montableau(6) = "7"
        montableau(7) = "8"
        montableau(8) = "9"

        Randomize() ' Initialise le générateur de nombres aléatoires

        For n = 0 To nombre - 1
            i = CLng(Int((nombre - n) * Rnd()))
            TextBox1.AppendText(montableau(CInt(i)) & " ")
            montableau(CInt(i)) = montableau(CInt(nombre - 1 - n))
        Next
    End Sub
    
    'Avec Tableau dynamique
    
    Sub Tiragealéatoire_tableaudynamique(ByVal x As Integer)
        ' Déclare un tableau dynamique.
        Dim Montableau() As Integer
        Dim n As Long, i As Long ' Variables de travail
        TextBox1.Text = ""

        ReDim Montableau(x)   ' Alloue x éléments.

        For j = 0 To x   ' Effectue la boucle x fois.
            Montableau(j) = j + 1   ' Initialise le tableau.
        Next j

        Randomize() ' Initialise le générateur de nombres aléatoires

        For n = 0 To x - 1
            i = CLng(Int((x - n) * Rnd()))
            TextBox1.AppendText(Montableau(CInt(i)) & " ")
            Montableau(CInt(i)) = Montableau(CInt(x - 1 - n))
        Next
    End Sub
    
    Pour lancer
    
     Tiragealéatoire_tableaudynamique(9)
     
     Avec une Collection
     
      Dim nombre_aleat As Integer
        Dim numbers As New List(Of Integer) From
    {1, 2, 3, 4, 5, 6, 7, 8, 9}
        TextBox1.Text = " "
        'On déclare une variable Classe Random() 
        Dim random As New Random()
      
        For index As Integer = 0 To numbers.Count - 1
            '.Next permet de retourner un nombre aléatoire contenu dans la plage spécifiée entre parenthèses.
            nombre_aleat = random.Next(numbers.Count)
            'On mémorise l'item d'index (nombre aléatoire) 
            TextBox1.AppendText(numbers(nombre_aleat) & " ") 'ajoute le nombre aléatoire dans la TextBox
            numbers.RemoveAt(nombre_aleat) 'supprime  Le nombre aléatoire de la liste
        Next
     
      'Avec collection dynamique
      
    Sub Tiragealéatoire_collectiondynamique(ByVal x As Integer)
        Dim nombre_aleat As Integer
        Dim lst As New List(Of String)
        TextBox1.Text = ""
        lst.Clear()
        For i = 1 To x
            lst.Add(i & " ")
        Next
        'On déclare une variable Classe Random() 
        Dim random As New Random()
        'On fait autant de tirages que de lignes 
        For index = 0 To lst.Count - 1
            '.Next permet de retourner un nombre aléatoire contenu dans la plage spécifiée entre parenthèses.
            nombre_aleat = random.Next(lst.Count)
            'On mémorise l'item d'index (nombre aléatoire) 
            TextBox1.AppendText(CStr(lst(nombre_aleat))) 'ajoute le nombre aléatoire dans la TextBox
            lst.RemoveAt(nombre_aleat) 'supprime  Le nombre aléatoire de la liste
           Next
    End Sub
    
    Pour lancer
      Tiragealéatoire_collectiondynamique(9)
      
     Avec listbox dynamique:
     
        Dim list As New System.Windows.Forms.ListBox()
        Dim index, i, nombre_aleat As Integer
        Dim rep As String
        Dim r As Integer
        Do
            rep = InputBox("Tapez un chiffre entre 9 et 50", " Tirage aléatoire", "49")
            If rep = "" Or IsNumeric(rep) = False Then Exit Do
             r = CType(rep, Integer)
        Loop Until r > 8 And r < 51
        TextBox1.Text = ""
        Me.Controls.Add(list) 'cree listBox
        list.Top = 10
        list.Left = 10
        'on rempli la listBox 
        For i = 1 To r
            list.Items.Add(i & " ")
        Next
        'On déclare une variable Classe Random() 
        Dim random As New Random()
        'On fait autant de tirages que de lignes 
        For index = 0 To list.Items.Count - 1
            '.Next permet de retourner un nombre aléatoire contenu dans la plage spécifiée entre parenthèses.
            nombre_aleat = random.Next(list.Items.Count)
            'On mémorise l'item d'index (nombre aléatoire) 
            TextBox1.AppendText(CStr(list.Items(nombre_aleat))) 'ajoute le nombre aléatoire dans la TextBox
            list.Items.RemoveAt(nombre_aleat) 'supprime  Le nombre aléatoire de la listBox 
            If r = 49 Then 'tirage loto
                '.Next permet de retourner un nombre aléatoire contenu dans la plage spécifiée entre parenthèses.
                TextBox2.Text = CStr(random.Next(1, 10)) 'numero complémentaire ajouter textBox2
                If index = 4 Then Exit For
            End If
        Next
        For Each ctrl As Control In Me.Controls
            If TypeOf ctrl Is ListBox Then
                Me.Controls.Remove(ctrl) 'supprime la listbox
            End If
        Next
      

Bonne programmation

A voir également

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.