IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

[VB6] Probleme avec la fonction Rnd


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 77
    Par défaut [VB6] Probleme avec la fonction Rnd
    Bonour tout le monde!

    Bon j vous explique le truc: j'ai fais un petit programme qui me donne les numéros à jouer pour l euro millions aléatoirement avec la fonction Rnd. Seulement le probleme c'est que quand j le lance en fait, c'est toujours les memes suites de chiffres. J'm'explique: pour le premier numéro: si au lancement j'ai le numéro 36 et apres je ferme le programme, qd j le relance j aurais encore le numero 36 en premier numero...

    Est ce que c normal et est ce qu il y a une solution??

    Merci

  2. #2
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    montre ton code, d'abord (on corrigera ensuite)

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 77
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    Dim MyValue
    Dim MyValue1
    Dim MyValue2
    Dim MyValue3
    Dim MyValue4
    Dim MyValue5
    Dim MyValue6
    Private Sub Command1_Click()
        Tirage
    End Sub
    Private Sub Command2_Click()
        Unload Me
    End Sub
    Public Function Tirage()
        MyValue = Int((50 * Rnd) + 1)
        MyValue1 = Int((50 * Rnd) + 1)
        MyValue2 = Int((50 * Rnd) + 1)
        MyValue3 = Int((50 * Rnd) + 1)
        MyValue4 = Int((50 * Rnd) + 1)
        MyValue5 = Int((9 * Rnd) + 1)
        MyValue6 = Int((9 * Rnd) + 1)
     
        If Not MyValue = MyValue1 = MyValue2 = MyValue3 = MyValue4 Then
            If Not MyValue5 = MyValue6 Then
                Text1.Text = "Le numéro " & MyValue & vbCrLf & "le numéro " & MyValue1 & vbCrLf & "le numéro " & MyValue2 & vbCrLf & "le numéro " & MyValue3 & vbCrLf & "et enfin le numéro " & MyValue4 & vbCrLf & "Et maintenant passons aux étoiles de la chance..." & vbCrLf & "La " & MyValue5 & vbCrLf & "et la " & MyValue6
                Else
                Tirage
            End If
            Else
            Tirage
        End If
    End Function

  4. #4
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    Il te manque simplement le Randomize

    essaye :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Command2_Click()
    Randomize
    myvalue = Int((50 * Rnd) + 1)
    MsgBox myvalue
    End Sub
    c'est tout

  5. #5
    Membre Expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 72
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Par défaut
    Bonjour

    Tu peux utiliser la fonction Randomize X

    Personellement, j'utilise
    Randomize Timer

    Ce qui initialise le générateur de nombre aléatoire de vb avec le nb de secondes écoulées depuis minuit

  6. #6
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 77
    Par défaut
    Super ca marche Merci...

    J'ai juste rajouté "Randomize" et voila

    Bonne journée

  7. #7
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 77
    Par défaut
    Y a un autre soucis que je croyais avoir réglé en mettant dans la fonction Tirage un if qui teste si les valeurs sont égales. J aimerais relancer le tirage si elles sont égales mais avec le code que j ai mis qui se trouve au dessus ca fonctionne pas.

    Si qqun a une solution...

  8. #8
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    Si tes valeurs à tirer sont une suite de chiffres, de 1 à 24 par exemple, tu peux les mettres dans un tableau booléen
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dim tblTirage(1 to 24) as boolean
    Au départ, toutes les valeurs sont fausse. Lorsqu'une valeur est tirée, tu vérifie si l'indice du tableau contient false...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    If Not(tblTirage(myValue)) Then
        tblTirage(myValue) = True
        ...
      Else
        ' tirer à nouveau
    End If

  9. #9
    Membre confirmé
    Inscrit en
    Mai 2006
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 77
    Par défaut
    OK j vais tenter merci

  10. #10
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    c'est celà que tu veux ?
    une form avec un bouton command1 et un label label1 et ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    Private tableau() As Long
     
    Public Sub Main()
        Initialiser 20 ' pour tirer parmi 20 numéros
        Permuter
        afficher 6 'pour ne retenir que 6 numéros
    End Sub
    Public Function afficher(nb As Integer) As String
        Dim Index As Long
            For Index = LBound(tableau) To nb - 1
            afficher = afficher & tableau(Index) & ", "
        Next
        Label1.Caption = afficher
    End Function
    Public Sub Permuter()
        Dim Index As Long
        Dim i1 As Long, i2 As Long
        Randomize
        For Index = 1 To UBound(tableau) / 2
            i1 = LBound(tableau) + Int(Rnd() * (UBound(tableau) - LBound(tableau) + 1))
            i2 = LBound(tableau) + Int(Rnd() * (UBound(tableau) - LBound(tableau) + 1))
             If i1 <> i2 Then
                tableau(i1) = tableau(i1) - tableau(i2)
                tableau(i2) = tableau(i1) + tableau(i2)
                tableau(i1) = tableau(i2) - tableau(i1)
            End If
        Next
    End Sub
    Public Sub Initialiser(Taille As Long)
        Dim Index As Long
         Erase tableau
        ReDim tableau(Taille - 1)
        For Index = LBound(tableau) To UBound(tableau)
            tableau(Index) = Index
        Next Index
    End Sub
    Private Sub Command1_Click()
      Main
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 01/06/2006, 19h45
  2. [LG] Problème avec la Fonction ReadLn en fin de programme
    Par killermano dans le forum Langage
    Réponses: 6
    Dernier message: 23/07/2005, 15h16
  3. [LG]Probleme avec une fonction
    Par xavier1936 dans le forum Langage
    Réponses: 7
    Dernier message: 08/02/2005, 22h48
  4. [VB6] Problèmes avec ListView
    Par FlopErik dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 12/03/2003, 16h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo