Random() sur nombre decimal.

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
ThoT
Messages : 33
Inscription : mar. 20/mars/2007 17:51

Random() sur nombre decimal.

Message 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!
Cls
Messages : 620
Inscription : mer. 22/juin/2005 8:51
Localisation : Nantes

Re: Random() sur nombre decimal.

Message 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
boddhi
Messages : 604
Inscription : lun. 26/avr./2010 16:14
Localisation : S 48° 52' 31'' / O 123° 23' 33''

Re: Random() sur nombre decimal.

Message 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)
Dernière modification par boddhi le mar. 31/août/2010 13:42, modifié 1 fois.
Avatar de l’utilisateur
SPH
Messages : 4937
Inscription : mer. 09/nov./2005 9:53

Re: Random() sur nombre decimal.

Message par SPH »

En trichant :

Code : Tout sélectionner

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

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Répondre