Fonction random visual basic

Melooo Messages postés 1476 Statut Membre -  
Melooo Messages postés 1476 Statut Membre -
Bonjour,
Je voudrais savoir comment faire pour qu'une fonction random ne m'affiche jamais le même chiffre...
Exemple : Je suis en train de faire un quizz. Mes questions et mes réponses sont stockées dans ma base de données, a chaque ouverture de formulaire mes questions changent grâce à la fonction random. Le hic est que de temps en temps j'ai deux questions identiques... Comment régler ce problème ?
Merci
Configuration: Windows XP
Internet Explorer 7.0

5 réponses

  1. blux Messages postés 5035 Date d'inscription   Statut Modérateur Dernière intervention   3 455
     
    Salut,

    Le hic est que de temps en temps j'ai deux questions identiques...
    Ben justement, dans ce cas-là, tu es victime du 'vrai' hasard...

    Comment appelles-tu ta fonction random ? Fais-tu un 'randomize' avant ?
    0
  2. yan777 Messages postés 1 Statut Membre
     
    Salut,

    Pour être sûr de ne pas avoir 2 fois la même question par partie, tu peux rajouter une colonne à ta base donnée qui te servira à cocher les questions au fûr et à mesure qu'elles sont posées. Avec une formule IF avec Random avant chaque nouvelle question tu peux faire en sorte de ne jamais selectionner les mêmes. Ensuite il n'y a plus qu'à vider cette colonne avant chaque fermeture du fichier pour réinitialiser tes questions.
    0
  3. Melooo Messages postés 1476 Statut Membre 84
     
    Voici l'extrait de mon code :

    'Création de mon tableau de label
    Dim tableau(5) As Label
    tableau(0) = Label1
    tableau(1) = Label2
    tableau(2) = Label3
    tableau(3) = Label4
    tableau(4) = Label5
    'Déclaration de ma fonction random
    Dim random As Integer

    'J'affiche seulement 5 questions dans des labels
    For i = 0 To maxlabel

    Randomize()
    random = CInt(Int((10 * Rnd()) + 1))

    Dim req As OleDbCommand = connexion.CreateCommand()
    'NQuestion = NuméroQuestion
    req.CommandText = "SELECT NomQuestion FROM Question WHERE NQuestion = " & random

    Dim reader As OleDbDataReader = req.ExecuteReader()
    If reader.Read() Then
    tableau(i).Text = reader.GetString(0)
    End If
    reader.Close()
    Next
    0
  4. Bidouilleu_R Messages postés 1209 Statut Membre 296
     
    la solutions réside dans le fait d'utiliser toute la grandeur du nombre générée au départ par Rnd

    Sur un très grand nombre de choix tu auras des répétitons mais sur un tirage ( 200 par exemple pour un loto ou une tombola)

    pas de problème avec cette ligne, regarde le contenu dans le déboggueur et tu comprendras.

    NumeroAléatoire = (1000* Rnd) + 1

    bien sur après il faut faire un tri du plus petit vers le plus grand ou l'inverse.

    A+
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Melooo Messages postés 1476 Statut Membre 84
     
    Yan777 ton idée me semble très bonne, le seul problème c'est que la base de donnée sera trop souvent exploité, si
    ya 5 personnes sur mon application, la base de données sera ouverte d'inombrable fois...
    Merci tout de même pour vos propositions
    0