Differenze tra le versioni di "Generare numeri casuali con le funzioni esterne srand() e rand() di stdlib.h"

Da Gambas-it.org - Wikipedia.
 
Riga 1: Riga 1:
Possiamo utilizzare le funzioni esterne ''srand( )'' e ''rand( )'', dichiarate nel file header "''/usr/include/stdlib.h''", per generare numeri casuali. <SUP>&#091;[[#Note|Nota 1]]&#093;</sup>
+
Possiamo utilizzare le funzioni esterne "srand()" e "rand()", dichiarate nel file header "''/usr/include/stdlib.h''", per generare numeri casuali. <SUP>&#091;[[#Note|nota 1]]&#093;</sup>
  
La funzione esterna ''srand( )'' in particolare inizializza il generatore di numeri casuali utilizzato successivamente dalla funzione esterna ''rand( )''. Esso va inizializzato una volta soltanto e prima di usare la predetta funzione esterna ''rand( )''. Ciò determina l'impostazione del seme (''seed'') per una sequenza di interi pseudo-casuali. La mancata impostazione del seme di partenza del generatore di numeri casuali mediante la funzione esterna ''srand( )'' causa il ripetersi del medesimo risultato.  
+
La funzione esterna "srand()" in particolare inizializza il generatore di numeri casuali utilizzato successivamente dalla funzione esterna "rand()". Esso va inizializzato una volta soltanto e prima di usare la predetta funzione esterna "rand()". Ciò determina l'impostazione del seme (''seed'') per una sequenza di interi pseudo-casuali. La mancata impostazione del seme di partenza del generatore di numeri casuali mediante la funzione esterna "srand()" causa il ripetersi del medesimo risultato.  
  
Va sottolineato che, avendo la funzione esterna ''rand( )'' un nome identificatore identico alla funzione ''Rand( )'' nativa di Gambas, nella sua dichiarazione con ''Extern'' si dovrà utilizzare un nome fittizio, e specificare poi con ''Exec'' il suo nome reale.
+
Va sottolineato che, avendo la funzione esterna "rand()" un nome identificatore identico alla funzione "Rand()" nativa di Gambas, nella sua dichiarazione con ''Extern'' si dovrà utilizzare un nome fittizio, e specificare poi con ''Exec'' il suo nome reale.
  
  
Riga 22: Riga 22:
 
   
 
   
 
   
 
   
  '''Public''' Sub Main()
+
  Public Sub Main()
 
    
 
    
  Dim b As Byte
+
  Dim b As Byte
 
    
 
    
 
  <FONT Color=gray>' ''Inizializza il generatore di numeri casuali:''</font>
 
  <FONT Color=gray>' ''Inizializza il generatore di numeri casuali:''</font>
Riga 34: Riga 34:
 
   Next
 
   Next
 
    
 
    
  '''End'''
+
  End
 
 
  
  
Riga 41: Riga 40:
 
=Note=
 
=Note=
 
[1] Vedi anche la pagina della Wiki: [http://www.gambas-it.org/wiki/index.php?title=Rand_() rand()]
 
[1] Vedi anche la pagina della Wiki: [http://www.gambas-it.org/wiki/index.php?title=Rand_() rand()]
 
  
  

Versione attuale delle 16:31, 21 giu 2024

Possiamo utilizzare le funzioni esterne "srand()" e "rand()", dichiarate nel file header "/usr/include/stdlib.h", per generare numeri casuali. [nota 1]

La funzione esterna "srand()" in particolare inizializza il generatore di numeri casuali utilizzato successivamente dalla funzione esterna "rand()". Esso va inizializzato una volta soltanto e prima di usare la predetta funzione esterna "rand()". Ciò determina l'impostazione del seme (seed) per una sequenza di interi pseudo-casuali. La mancata impostazione del seme di partenza del generatore di numeri casuali mediante la funzione esterna "srand()" causa il ripetersi del medesimo risultato.

Va sottolineato che, avendo la funzione esterna "rand()" un nome identificatore identico alla funzione "Rand()" nativa di Gambas, nella sua dichiarazione con Extern si dovrà utilizzare un nome fittizio, e specificare poi con Exec il suo nome reale.


Mostriamo un esempio pratico:

Library "libc:6"

' time_t time (time_t *__timer)
' Return the current time and put it in *TIMER if TIMER is not NULL.
Private Extern time_C(__timer As Pointer) As Long Exec "time"

' void srand (unsigned int __seed)
' Seed the random number generator with the given number.
Private Extern srand(__seed As Integer)

' int rand (void)
' Return a random integer between 0 and RAND_MAX inclusive.
Private Extern rand_C() As Integer Exec "rand"


Public Sub Main()
 
  Dim b As Byte
 
' Inizializza il generatore di numeri casuali:
  srand(CInt(time_C(0)))
  
' Stampa 10 numeri compresi fra 1 e 100:
  For b = 1 To 10
    Print rand_C() Mod 100 + 1
  Next
  
End


Note

[1] Vedi anche la pagina della Wiki: rand()


Riferimenti