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.
+
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( )''.
+
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_()



Riferimenti