2 question sur rnd

12miet Messages postés 3 Date d'inscription dimanche 22 janvier 2006 Statut Membre Dernière intervention 4 février 2006 - 1 févr. 2006 à 21:56
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 - 2 févr. 2006 à 09:33
bonjours c pour savoir cmt on fait pr dire kun nombre généré donne un mot.. du genre int(rnd*2)+1 et comment je fais pour dire ke 1=oui et 2=non et aussi je voudrais k'on mexplik clairement les variable du int((5-7+5)*rnd+7) jespère que vous comprené

desoler de mon ecriture :s

4 réponses

econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
1 févr. 2006 à 22:25
Compte tenu du langage que tu emploies, c'est pas évident de te comprendre ...



Pour qu'un nombre génère un mot, il faut ... un coup de baguette
magique, ou alors une spécification, un algorithme, une explication,
... enfin une démarche à suivre. Moi je peux transformer 1 en "toto",
543 en "croissant", mais toi ? Que veux-tu faire ?


1=oui, 2=non

If Int(Rnd*2)+1 = 1 Then

' Faire les actions nécessaires au OUI.

Else

' Faire les actions nécessaires au NON

End If





Il n'y a pas de variable dans l'expression int((5-7+5)*rnd+7).

Il n'y a que des chiffres et deux fonctions.



Déjà, çà peut se simplifier par Int(3*Rnd+7)

Ca te génera un chiffre compris entre 7 et 9 (donc, 7, 8 ou 9)


Manu
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
2 févr. 2006 à 00:02
Salut
Moi et ma boule magique, on croit avoir compris : La question est : "Comment sortir un mot au hasard à partir d'une liste de mots ?"
La réponse pourrait-être :
Dim Mots(0 To 20) As String
Mots(0) = "est "
Mots(1) = "vin"
Mots(2) = "Jack "
Mots(3) = "de"
Mots(5) = "and "
Mots(6) = "un "
Mots(7) = "gr"
Debug.Print Mots(2) & Mots(0) & Mots(6) & Mots(7) & Mots(5) & Mots(3) & Mots(1)
J'ai 8 mots rangés dans les mémoires 0 à 7
La fonction Rnd renvoie un nombre de 0.0 à 1.0 (décimal)
Pour que l'équation renvoie un chiffre entre 0 et 7, il suffit de multiplier la valeur fournie par Rnd, par 7 :
Debug.Print "Mot au hasard : "; Mots(Int(Rnd() * 7))
Int n'est là que pour convertir le nombre à virgule en entier et ainsi être compatible avec les index des Mots()

Dans l'équation que tu donnais, il y avait un "+ 1" : C'est parce que ton tableau de données doit commencer à s'indexer à 1 et non 0. Dans ce as, il ne faut pas multiplier par 7, mais par 6, puisqu'on ajoute systématiquement un 1 derrière, genre Int(Rnd() * 6) + 1), comme ça, si Rnd renvoie sa valeur maxi 1, le résultat donnera 1*6+1 = 7

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
0
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
2 févr. 2006 à 09:30
Ah ouais .... super ta boule magique. J'vais en acheter une aussi, çà devient nécessaire ces derniers temps ...

Effectivement, après relecture, çà pourrait être çà !

Manu
0
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
2 févr. 2006 à 09:33
Au passage, si je ne m'abuse, on doit avoir l'inégalité ci-dessous :





0 <= Rnd < 1



Rnd ne vaudra jamais 1.





Manu
0
Rejoignez-nous