Differenze tra le versioni di "Rand ()"

Da Gambas-it.org - Wikipedia.
(Creata pagina con "La funzione esterna '''rand()''', dichiarata nel file haeder "''/usr/include/stdlib.h''": int rand (void) ritorna un numero casuale intero incluso fra 0 e la costante RAND_M...")
 
 
(6 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>&#091;[[#Note|Nota 1]]&#093;</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"</font> <FONT color=#B22222>'''Exec "rand"'''</font>
+
  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()
+
  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>
+
  <FONT Color=gray>' ''Alla funzione esterna "srand()" va passato un numero sempre diverso, per impostare il seme del successivo numero casuale.''
  srand(Val(Scan(CStr(Timer), "*.*")[1]))
+
' ''Passiamo alla funzione "srand()" la sola parte frazionaria del valore ritornato dalla funzione nativa di Gambas "Timer()"''</font> <SUP>&#091;[[#Note|Nota 2]]&#093;</sup><FONT Color=gray>.</font>
 +
  srand(Val(Scan(CStr(Timer), "*.*")[1]))
 
      
 
      
  While True
+
  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
+
  Print <FONT color=#B22222>rand_C</font>() % 100
    Sleep 0.3
+
  Wait 0.3
  Wend
+
Loop
 
    
 
    
  '''End'''
+
  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.
  
  

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.


Riferimenti