Page 1 sur 1

Random() sur nombre decimal.

Publié : mar. 31/août/2010 12:30
par ThoT
Bonjour à tous.
J'essaye d'obtenir un nombre decimal aleatoire, mais la fonction Random(maximum.f) ne me renvoit que des nombres entiers si maximum.f est entier (100.0 par exemple).
Voici mon code actuel :

Code : Tout sélectionner

Case #Button_0
             Debug "Bouton 'Generer' cliqué!"
             minimum.d = ValD(GetGadgetText(#Mini)) ;recuperation de la valeur minimale
             maximum.d = ValD(GetGadgetText(#Maxi)) ;recuperation de la valeur maximale
             If (minimum >= maximum) ; verification des valeurs minimales/maximales
               MessageRequester("Erreur !","La valeur minimale doit etre strictement inferieure à la valeur maximale.",#PB_MessageRequester_Ok)
               Continue
             EndIf
             decimales.w = Val(GetGadgetText(#Deci_texte)) ;recuperation du nombre de chiffres aprés la virgule desiré
             resultat.d = minimum + Random(maximum-minimum)
             Debug resultat
             SetGadgetText(#Resultat,StrD(resultat,decimales))
Merci par avance pour votre aide!

Re: Random() sur nombre decimal.

Publié : mar. 31/août/2010 13:13
par Cls
Salut,

quelque chose dans le genre ?

Code : Tout sélectionner

Procedure.f RandomF(minimum.f, maximum.f, precision.i)
  
  a.i = Random(maximum - minimum - 1) + minimum
  b.f = Random(Pow(10, precision)) / Pow(10, precision)
  
  ProcedureReturn a + b
EndProcedure

Re: Random() sur nombre decimal.

Publié : mar. 31/août/2010 13:38
par boddhi
Random(), de mémoire, ne retourne que des nombres entiers

Code : Tout sélectionner

ValMax.i=1000
ValMin.i=500
NbDec.b=3

Valeur.d=ValD(Str(ValMin+Random(ValMax-ValMin))+"."+Str(Random(Pow(10,NbDec))))

Debug Valeur
Debug StrD(Valeur,3)

Re: Random() sur nombre decimal.

Publié : mar. 31/août/2010 13:41
par SPH
En trichant :

Code : Tout sélectionner

For i=1 To 20 
f.f=Random(1000)/Random(1000)
Debug f
Next