Rechercher : dans
Par :

Fonction random visual basic

Dernière réponse le 2 déc 2008 à 16:42:40 Melooo, le 2 déc 2008 à 15:48:00 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « fonction random visual basic » dans :
Introduction à Visual Basic Voir Présentation de Visual Basic Visual Basic est un outil développé par Microsoft pour développer facilement des applications fonctionnant sous Microsoft Windows ©. Visual Basic est, comme son nom l'indique, un outil visuel permettant de créer...
Erreur système : Microsoft Visual Basic VoirEn ouvrant Excel, vous rencontrez un message d'erreur. Une fenêtre au nom de "Microsoft Visual Basic" s'ouvre avec le contenu suivant : Erreur système &H80004005 (-2147467259). Erreur non spécifiée Pour corriger le problème, suivez les...
Télécharger Visual Basic 6 Runtime (VB6 DLL) VoirLe Runtime Visual Basic 6 contient l'ensemble des librairies (DLL) nécessaires pour exécuter des programmes écrits en langage Visual Basic 6.0. Il contient notamment les DLL suivantes :...

1

blux, le 2 déc 2008 à 15:55:34

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 ?

A+ Blux           

 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"

Répondre à blux

2

yan777, le 2 déc 2008 à 15:57:09

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.

Répondre à yan777

3

Melooo, le 2 déc 2008 à 16:03:45

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

Répondre à Melooo

4

Bidouilleu_R, le 2 déc 2008 à 16:05:28

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+

Répondre à Bidouilleu_R

5

 Melooo, le 2 déc 2008 à 16:42:40

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

Répondre à Melooo