Differenze tra le versioni di "Generare numeri casuali con le funzioni esterne del API di GLib"

Da Gambas-it.org - Wikipedia.
 
Riga 1: Riga 1:
 
La libreria '''GLib''' di GNOME consente anche di generare dei numeri casuali in un ambito di valori da noi stabilito. In particolare è possibile generare valori interi (tipo ''Integer'') e a virgola mobile (tipo ''Float'').
 
La libreria '''GLib''' di GNOME consente anche di generare dei numeri casuali in un ambito di valori da noi stabilito. In particolare è possibile generare valori interi (tipo ''Integer'') e a virgola mobile (tipo ''Float'').
  
E' necessario avere installata nel sistema e richiamare in Gambas la libreria condivisa: "''libglib-2.0.so.0.6400.6'' ".
+
E' necessario avere installata nel sistema e richiamare in Gambas la libreria condivisa: "''libglib-2.0.so.0.7200.4'' ".
  
 
Mostriamo un semplice esempio pratico, nel quale si utilizzeranno quattro funzioni esterne:
 
Mostriamo un semplice esempio pratico, nel quale si utilizzeranno quattro funzioni esterne:
Riga 8: Riga 8:
 
* ''g_random_double( )'' per ottenere un numero in virgola mobile casuale ricompreso nelle capacità del tipo di valore ''gdouble'';
 
* ''g_random_double( )'' per ottenere un numero in virgola mobile casuale ricompreso nelle capacità del tipo di valore ''gdouble'';
 
* ''g_random_double_range( )'' per ottenere un numero in virgola mobile casuale posto fra un minimo e un massimo. Va precisato che il limite massimo dei due valori, che formano l'ambito, non sarà mai generato, mai restituito.
 
* ''g_random_double_range( )'' per ottenere un numero in virgola mobile casuale posto fra un minimo e un massimo. Va precisato che il limite massimo dei due valori, che formano l'ambito, non sarà mai generato, mai restituito.
  Library "libglib-2.0:0.6400.6"
+
  Library "libglib-2.0:0.7200.4"
 
   
 
   
 
  <FONT Color=gray>' ''guint32 g_random_int (void)''
 
  <FONT Color=gray>' ''guint32 g_random_int (void)''

Versione attuale delle 08:29, 30 apr 2023

La libreria GLib di GNOME consente anche di generare dei numeri casuali in un ambito di valori da noi stabilito. In particolare è possibile generare valori interi (tipo Integer) e a virgola mobile (tipo Float).

E' necessario avere installata nel sistema e richiamare in Gambas la libreria condivisa: "libglib-2.0.so.0.7200.4 ".

Mostriamo un semplice esempio pratico, nel quale si utilizzeranno quattro funzioni esterne:

  • g_random_int( ) per ottenere un numero intero casuale ricompreso nelle capacità del tipo di valore guint32 (intero senza segno);
  • g_random_int_range( ) per ottenere un numero intero casuale posto fra un minimo e un massimo. Va precisato che il limite massimo dei due valori, che formano l'ambito, non sarà mai generato, mai restituito;
  • g_random_double( ) per ottenere un numero in virgola mobile casuale ricompreso nelle capacità del tipo di valore gdouble;
  • g_random_double_range( ) per ottenere un numero in virgola mobile casuale posto fra un minimo e un massimo. Va precisato che il limite massimo dei due valori, che formano l'ambito, non sarà mai generato, mai restituito.
Library "libglib-2.0:0.7200.4"

' guint32 g_random_int (void)
' Return a random guint32 equally distributed over the range [0..2^32-1].
Private Extern g_random_int() As Long

' guint32 g_random_int_range (gint32 begin, gint32 end)
' Return a random guint32 equally distributed over the range [0..2^32-1].
Private Extern g_random_int_range(begin As Integer, endI As Integer) As Integer

' gdouble g_random_double (void)
' Returns a random gdouble equally distributed over the range [0..1).
Private Extern g_random_double() As Float

' gdouble g_random_double_range (gdouble begin, gdouble end)
' Returns a random gdouble equally distributed over the range [begin ..end ).
Private Extern g_random_double_range(begin As Float, endF As Float) As Float


Public Sub Main()
 
 Dim l As Long
 Dim i As Integer
 Dim f As Float
  
 l = g_random_int()
 Print l
  
 i = g_random_int_range(1, 8)
 Print i
  
 f = g_random_double()
 Print f
  
 f = g_random_double_range(1.0, 8.0)
 Print f
  
End


Riferimenti