Differenze tra le versioni di "Drand48 ()"

Da Gambas-it.org - Wikipedia.
(Creata pagina con "La funzione della libreria di C void drand48 (void) restituisce un numero pseudo-casuale nell'intervallo 0.0 - 1.0. Il generatore casuale utilizzato è l'algoritmo congruente...")
 
Riga 23: Riga 23:
 
    
 
    
 
   Dim f As Float
 
   Dim f As Float
 
+
 
 +
<FONT color=Gray>' ''Passiamo la parte frazionale di "CFloat(Now)", che rappresenta i microsecondi''
 +
' ''trascorsi dall'epoca Gambas (una data prescelta posta a 8000 anni a.c.)''</font>
 
   srand48(Val(Scan(Str(CFloat(Now)), "*,*")[1]))
 
   srand48(Val(Scan(Str(CFloat(Now)), "*,*")[1]))
 
    
 
    

Versione delle 09:09, 4 nov 2017

La funzione della libreria di C

void drand48 (void)

restituisce un numero pseudo-casuale nell'intervallo 0.0 - 1.0. Il generatore casuale utilizzato è l'algoritmo congruente lineare e l'aritmetica con intero a 48 bit. Prima della prima chiamata alla funzione "drand48( )", è necessario chiamare la funzione "srand48( )" o la funzione "seed48( )" per inizializzare il "seme" casuale.


Volendola utilizzare in Gambas, bisognerà dichiararla con Extern, nonché bisognerà dichiarare la libreria di C: libc.so.6, nella quale la funzione è contenuta:

Private Extern drand48(void) As Float In "libc:6"


Semplice esempio di uso in Gambas:

Library "libc:6"

' void srand48 (long int __seedval)
' Seed random number generator.
Private Extern srand48(__seedval As Long)

' double drand48 (void)
' Return non-negative, double-precision floating-point value in [0.0,1.0).
Private Extern drand48() As Float
 

Public Sub Main()
 
 Dim f As Float
 
' Passiamo la parte frazionale di "CFloat(Now)", che rappresenta i microsecondi
' trascorsi dall'epoca Gambas (una data prescelta posta a 8000 anni a.c.)
  srand48(Val(Scan(Str(CFloat(Now)), "*,*")[1]))
  
  f = drand48()
  
  Print f, "è un numero casuale compreso fra 0,0 e 1,0"
  
End



Riferimenti