Differenze tra le versioni di "Generare numeri casuali con le funzioni esterne srand() e rand() di stdlib.h"
Riga 1: | Riga 1: | ||
− | Possiamo utilizzare le funzioni esterne ''srand( )'' e ''rand( )'', dichiarate nel file header "''/usr/include/stdlib.h''", per generare numeri casuali. | + | Possiamo utilizzare le funzioni esterne ''srand( )'' e ''rand( )'', dichiarate nel file header "''/usr/include/stdlib.h''", per generare numeri casuali. <SUP>[[[#Note|Nota 1]]]</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( )''. | + | 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 35: | Riga 35: | ||
'''End''' | '''End''' | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | =Note= | ||
+ | [1] Vedi anche: http://www.gambas-it.org/wiki/index.php?title=Rand_() | ||
Versione delle 20:43, 18 mar 2017
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" ' 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" ' 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" Public Sub Main() Dim b As Byte ' Inizializza il generatore di numeri casuali: srand(time_C(0)) ' Stampa 10 numeri compresi fra 0 e 99: For b = 1 To 10 Print rand_C() Mod 100 Next End
Note
[1] Vedi anche: http://www.gambas-it.org/wiki/index.php?title=Rand_()