Differenze tra le versioni di "Rand ()"
(4 versioni intermedie di uno stesso utente non sono mostrate) | |||
Riga 1: | Riga 1: | ||
− | La funzione esterna '''rand()''', dichiarata nel file haeder "''/usr/include/stdlib.h''": | + | La funzione esterna '''rand()''', dichiarata nel file haeder "''/usr/include/stdlib.h''": <SUP>[[[#Note|Nota 1]]]</sup><FONT Color=gray>.</font> |
int rand (void) | int rand (void) | ||
ritorna un numero casuale intero incluso fra 0 e la costante RAND_MAX. Tale costante è dichiarata nel predetto file haeder ''/usr/include/stdlib.h'' e lì inizializzata con il valore "2147483647". | ritorna un numero casuale intero incluso fra 0 e la costante RAND_MAX. Tale costante è dichiarata nel predetto file haeder ''/usr/include/stdlib.h'' e lì inizializzata con il valore "2147483647". | ||
Riga 8: | Riga 8: | ||
Volendo utilizzare in Gambas la funzione esterna ''rand( )'', bisognerà dichiararla con ''Extern'', nonché dichiarare la libreria di C, ''libc.so.6'', nella quale la funzione è contenuta. Da sottolineare che, poiché la funzione esterna "''rand( )''" è <SPAN style="text-decoration:underline">omonima</span> alla funzione di Gambas "''Rand( )''", bisognerà assegnarle un nome a piacere, ma si dovrà anche richiamare il suo vero nome con il comando ''Exec''. | Volendo utilizzare in Gambas la funzione esterna ''rand( )'', bisognerà dichiararla con ''Extern'', nonché dichiarare la libreria di C, ''libc.so.6'', nella quale la funzione è contenuta. Da sottolineare che, poiché la funzione esterna "''rand( )''" è <SPAN style="text-decoration:underline">omonima</span> alla funzione di Gambas "''Rand( )''", bisognerà assegnarle un nome a piacere, ma si dovrà anche richiamare il suo vero nome con il comando ''Exec''. | ||
<BR>Dunque avremo ad esempio: | <BR>Dunque avremo ad esempio: | ||
− | Private <FONT color=#B22222>Extern rand_C</font>() As Integer In "<FONT color=#B22222>libc:6 | + | Private <FONT color=#B22222>Extern rand_C</font>() As Integer In "<FONT color=#B22222>libc:6</font>" <FONT color=#B22222>'''Exec "rand"'''</font> |
− | |||
− | |||
Semplice esempio di uso in Gambas: | Semplice esempio di uso in Gambas: | ||
Library "libc:6" | Library "libc:6" | ||
Riga 23: | Riga 21: | ||
− | + | Public Sub Main() | |
<FONT Color=gray>' ''Alla funzione esterna "srand()" va passato un numero sempre diverso, per impostare il seme del successivo numero casuale.'' | <FONT Color=gray>' ''Alla funzione esterna "srand()" va passato un numero sempre diverso, per impostare il seme del successivo numero casuale.'' | ||
− | ' ''Passiamo alla funzione "srand()" la sola parte frazionaria del valore ritornato dalla funzione nativa di Gambas "Timer()" | + | ' ''Passiamo alla funzione "srand()" la sola parte frazionaria del valore ritornato dalla funzione nativa di Gambas "Timer()"''</font> <SUP>[[[#Note|Nota 2]]]</sup><FONT Color=gray>.</font> |
− | + | srand(Val(Scan(CStr(Timer), "*.*")[1])) | |
− | + | Do | |
<FONT Color=gray>' ''Il numero di zeri, presenti nel divisore, restituisce un valore composto da un pari numero di cifre:''</font> | <FONT Color=gray>' ''Il numero di zeri, presenti nel divisore, restituisce un valore composto da un pari numero di cifre:''</font> | ||
− | + | Print <FONT color=#B22222>rand_C</font>() % 100 | |
− | + | Wait 0.3 | |
− | + | Loop | |
− | + | End | |
− | |||
=Note= | =Note= | ||
− | [1] | + | [1] vedi anche la pagina della Wiki: [Generare numeri casuali con le funzioni esterne srand() e rand() di stdlib.h] |
+ | [2] La funzione "Timer()" restituisce il numero di secondi passati dall'inizio del programma. | ||
Versione attuale delle 14:02, 13 giu 2024
La funzione esterna rand(), dichiarata nel file haeder "/usr/include/stdlib.h": [Nota 1].
int rand (void)
ritorna un numero casuale intero incluso fra 0 e la costante RAND_MAX. Tale costante è dichiarata nel predetto file haeder /usr/include/stdlib.h e lì inizializzata con il valore "2147483647".
Affinché il risultato di tale funzione esterna non sia sempre il medesimo, è necessario cambiare il seme (seed) di partenza del generatore di numeri casuali, altrimenti esso parte sempre da zero. Il generatore di numeri casuali è rappresentato da un'altra funzione esterna: srand( ).
Volendo utilizzare in Gambas la funzione esterna rand( ), bisognerà dichiararla con Extern, nonché dichiarare la libreria di C, libc.so.6, nella quale la funzione è contenuta. Da sottolineare che, poiché la funzione esterna "rand( )" è omonima alla funzione di Gambas "Rand( )", bisognerà assegnarle un nome a piacere, ma si dovrà anche richiamare il suo vero nome con il comando Exec.
Dunque avremo ad esempio:
Private Extern rand_C() As Integer In "libc:6" Exec "rand"
Semplice esempio di uso in Gambas:
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" Public Sub Main() ' Alla funzione esterna "srand()" va passato un numero sempre diverso, per impostare il seme del successivo numero casuale. ' Passiamo alla funzione "srand()" la sola parte frazionaria del valore ritornato dalla funzione nativa di Gambas "Timer()" [Nota 2]. srand(Val(Scan(CStr(Timer), "*.*")[1])) Do ' Il numero di zeri, presenti nel divisore, restituisce un valore composto da un pari numero di cifre: Print rand_C() % 100 Wait 0.3 Loop End
Note
[1] vedi anche la pagina della Wiki: [Generare numeri casuali con le funzioni esterne srand() e rand() di stdlib.h]
[2] La funzione "Timer()" restituisce il numero di secondi passati dall'inizio del programma.