Boule de billard n°8 ou comment faire confiance au hasard...

Soyez le premier à donner votre avis sur cette source.

Vue 4 836 fois - Téléchargée 202 fois

Description

ceci est une reproduction de la boule de billard noire qu'il faut secouer pour voir s'affcher une réponse dans un cadre comme on peut en voir dans certaine séries a la télé...

tout d'abord, dans la boite a outil sélectionnez le bouton "shape" et créez en un qui fasse presque toute la feuille.
puis dans propriété, sélectionnez : backcolor : noir
backstyle : 1-opaque
shape : 3-circle

faites un autre shape plus petit a l'intérieur du premier
avec comme propriétés : backcolor : blanc
backstyle : 1-opaque
shape : 3-circle

faites un label à l'intérieur du dexième shape
avec comme propriétés : name : lblReponse
alignment : 2-center
backstyle : 0-transparent
caption : rien
font : arial gras 10

et enfin faites un command button sous le premier shape
avec comme propriétés : name : cmdSecouer
caption : SECOUER
font : arial gras 12

cliquez sur la feuille form1 et dans propriété mettez "boule de billard n° 8" dans caption et désactivez minbutton et maxbutton en mettant false comme valeur en face de ces deux propriétés

puis double-cliquez sur SECOUER et tapez ce code (attention pour les débs, les deux premières lignes sont à taper avant la private sub)
bon je sais le code est long mais il n'est pas très compliqué...
comme vous pouvez le constater le code source utilise la fonction Rnd qui génère un nombre au hasard entre 0 et 1 non inclus
j'ai donc multiplié cette valeur par 1000 pour que ce soit encore plus facile à comprendre voila qui vous montre un exemple d'utilisation du hasard avec visual basic

Source / Exemple :


'déclaration des variables
Dim aleat As Integer      'aleat est le nombre aléatoire qui déterminera le message a afficher
Dim reponse As String    'reponse est la variable dans laquelle sera stockée la réponse

Private Sub cmdSecouer_Click()
Randomize
aleat = Rnd * 1000
    If aleat < 33.33 Then
        reponse = "oui"
    ElseIf aleat < 66.66 Then
        reponse = "non"
    ElseIf aleat < 99.99 Then
        reponse = "peut-être"
    ElseIf aleat < 133.32 Then
        reponse = "peut-être pas"
    ElseIf aleat < 166.65 Then
        reponse = "attend un peu"
    ElseIf aleat < 199.98 Then
        reponse = "patiente"
    ElseIf aleat < 233.31 Then
        reponse = "redemande plus tard"
    ElseIf aleat < 266.64 Then
        reponse = "sois plus patient"
    ElseIf aleat < 299.97 Then
        reponse = "ce n'est pas le bon moment"
    ElseIf aleat < 333.3 Then
        reponse = "dis-moi plus de choses à ce sujet..."
    ElseIf aleat < 366.63 Then
        reponse = "précise ta question"
    ElseIf aleat < 399.96 Then
        reponse = "articule !"
    ElseIf aleat < 433.29 Then
        reponse = "parle plus fort, je ne t'entend pas !"
    ElseIf aleat < 466.62 Then
        reponse = "qui a dit que je pouvais te répondre ?"
    ElseIf aleat < 499.95 Then
        reponse = "es-tu sûr de vouloir entendre la réponse ?"
    ElseIf aleat < 533.28 Then
        reponse = "n'as tu rien de plus intéressant à faire ?"
    ElseIf aleat < 566.61 Then
        reponse = "avant de répondre, j'aimerais en savoir plus sur toi"
    ElseIf aleat < 599.94 Then
        reponse = "je ne sais pas"
    ElseIf aleat < 633.27 Then
        reponse = "aucune idée"
    ElseIf aleat < 666.6 Then
        reponse = "reformule autrement ta question"
    ElseIf aleat < 699.93 Then
        reponse = "pourquoi le saurais-je ?"
    ElseIf aleat < 733.26 Then
        reponse = "on m'attend pour une partie de billard"
    ElseIf aleat < 766.59 Then
        reponse = "demande plutot à la boule blanche"
    ElseIf aleat < 799.92 Then
        reponse = "je n'ai pas réponse à tout"
    ElseIf aleat < 833.25 Then
        reponse = "je te le dirais plus tard"
    ElseIf aleat < 866.58 Then
        reponse = "tu m'as l'air désespéré"
    ElseIf aleat < 899.91 Then
        reponse = "tu me fatigue"
    ElseIf aleat < 933.24 Then
        reponse = "je ne suis pas un hochet"
    ElseIf aleat < 966.57 Then
        reponse = "laisse-moi me reposer"
    Else
        reponse = "ta question est trop compliquée"
    End If
    
lblReponse.Caption = reponse
    
End Sub

Conclusion :


comme vous pouvez le constater le code source utilise la fonction Rnd qui génère un nombre au hasard entre 0 et 1 non inclus
j'ai donc multiplié cette valeur par 1000 pour que ce soit encore plus facile à comprendre voila qui vous montre un exemple d'utilisation du hasard avec visual basic

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

cs_Black Night
Messages postés
44
Date d'inscription
jeudi 5 octobre 2000
Statut
Membre
Dernière intervention
21 juin 2003

Je confirme tout ve que vous avez dit, et je rajoute un argument pour prouver que les nbr pseudo-anéatoires sont basés sur le temps : vous savez peur etre que le langage C repose sur une série de bibliotéques (ou plutot des headers pour les puristes), et la fonction qui initialise le générateur de nbr aléatoire se situe dans la bibliotheque <time.h> (time = temps)
Skywalker13
Messages postés
111
Date d'inscription
dimanche 6 janvier 2002
Statut
Membre
Dernière intervention
27 août 2004

Non je ne la connais pas.. et ça na finallement pas une grande importance, tant que sa parrait "aléatoire" pour notre petite tête. :-)
cs_Warny
Messages postés
478
Date d'inscription
mercredi 7 août 2002
Statut
Membre
Dernière intervention
10 juin 2015

Pour les séries pseudo aléatoire, la basic en son temps utilisait des séries de fourrier, en gros on prend un certain nombre de valeurs qu'on multiplie entre elles modulo un nombre premier. Si ces valeurs sont prises à partir de l'horloge système (à la miliseconde près) on obtient un résultat qui parait très aléatoire. Ensuite chaque valeur calculée est soumise à une fonction des n valeurs précédentes (une multiplication par hasard) modulo toujours la même valeur.
Pour générer des nombres vraiment aléatoires, certains programmeurs (notamment celui qui a inventé le pgp) se bases sur les entrées utilisateur (temps d'appuis des touches clavier et déplacement de la souris) qui sont normallement assez cahotiques. Ensuite on revient sur une serie de fourrier réduite à une cinquantaine de valeurs si l'utilisateur ne touche plus à ses périphériques.
Je ne connait pas l'algorithme qu'utilise aujourd'hui le vb, mais on peut parier que son système de valeur aléatoires n'a pas changé depuis des lustres.
Ktb
Messages postés
80
Date d'inscription
mercredi 13 mars 2002
Statut
Membre
Dernière intervention
8 novembre 2006

non c'est randomize tout court : l'instruction initialise le générateur de nombres pseudo-aléatoires (n'est-ce pas skywalker ;)) en se basant sur l'horloge système : si tu ne mets pas randomize avant le rnd, tu peux relancer le prog autant de fois que tu veux, t'auras toujours la même série de nombres (sauf si tu redémarres l'ordi mais c'est un pei débile alors !).

Voilà ;), et en effet je confirme que les nombres générés sont pseudo-aléatoires, il me semble qu'en en connaissant quelques un consécutifs on peut prédire les autres (pas mal pour de l'aléatoire hein ? lol) mais je suis pas sûr que ça soit le cas avec VB.

P.S : Skywalker13, tu connais la suite utilisée par VB pour générer les nombres pseudo-aléatoires ? ça m'intéresse si t'as la réponse
@+ KtB
JoVB
Messages postés
87
Date d'inscription
lundi 4 novembre 2002
Statut
Membre
Dernière intervention
10 mars 2009

ouais juste... c'est en rapport avec le nombre de secondes écoulées depuis minuit, et je crois encore qqs autres paramètres !
Et c'est pas plutot "Randomize Timer" qu'il faut mettre ?

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.