Fonction random visual basic

Fermé
Melooo Messages postés 1405 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 18 mars 2013 - 2 déc. 2008 à 15:48
Melooo Messages postés 1405 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 18 mars 2013 - 2 déc. 2008 à 16:42
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
A voir également:

5 réponses

blux Messages postés 26548 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 27 décembre 2024 3 319
2 déc. 2008 à 15:55
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
yan777 Messages postés 1 Date d'inscription lundi 1 décembre 2008 Statut Membre Dernière intervention 2 décembre 2008
2 déc. 2008 à 15:57
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
Melooo Messages postés 1405 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 18 mars 2013 84
2 déc. 2008 à 16:03
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
Bidouilleu_R Messages postés 1181 Date d'inscription mardi 27 mai 2008 Statut Membre Dernière intervention 12 juillet 2012 293
2 déc. 2008 à 16:05
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Melooo Messages postés 1405 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 18 mars 2013 84
2 déc. 2008 à 16:42
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