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'').
  
Va precisato che il limite massimo dei due valori, che formano l'ambito, non sarà mai generato, mai restituito.
+
E' necessario avere installata nel sistema e richiamare in Gambas la libreria dinamica condivisa: "''libglib-2.0.so''"
  
Sarà necessario richiamare la libreria (nella sua attuale versione): "''libglib-2.0.so''"
 
  
 
+
Mostriamo un semplice esempio pratico, nel quale si utilizzeranno quattro funzioni esterne:
Mostriamo un semplice esempio pratico:
+
* ''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"
 
  Library "libglib-2.0"
 +
 +
<FONT Color=gray>' ''guint32 g_random_int (void)''
 +
' ''Return a random guint32 equally distributed over the range [0..2^32-1].''</font>
 +
Private Extern g_random_int() As Long
 
   
 
   
 
  <FONT Color=gray>' ''guint32 g_random_int_range (gint32 begin, gint32 end)''
 
  <FONT Color=gray>' ''guint32 g_random_int_range (gint32 begin, gint32 end)''
 
  ' ''Return a random guint32 equally distributed over the range [0..2^32-1].''</font>
 
  ' ''Return a random guint32 equally distributed over the range [0..2^32-1].''</font>
 
  Private Extern g_random_int_range(begin As Integer, endI As Integer) As Integer
 
  Private Extern g_random_int_range(begin As Integer, endI As Integer) As Integer
 +
 +
<FONT Color=gray>' ''gdouble g_random_double (void)''
 +
' ''Returns a random gdouble equally distributed over the range [0..1).</font>
 +
Private Extern g_random_double() As Float
 
   
 
   
 
  <FONT Color=gray>' ''gdouble g_random_double_range (gdouble begin, gdouble end)''
 
  <FONT Color=gray>' ''gdouble g_random_double_range (gdouble begin, gdouble end)''
Riga 19: Riga 29:
 
   
 
   
 
  '''Public''' Sub Main()
 
  '''Public''' Sub Main()
 
<FONT Color=gray>' ''Otteneiamo un numero casuale intero fra 1 e 10:''</font>
 
  Print g_random_int_range(1, 10)
 
 
    
 
    
<FONT Color=gray>' ''Otteneiamo un numero casuale di tipo "Float" fra 0.0 e 0.999:''</font>
+
  Dim l As Long
  Print g_random_double_range(0.0, 0.999)
+
  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'''
 
  '''End'''
  
Riga 32: Riga 52:
  
 
=Riferimenti=
 
=Riferimenti=
* [https://developer.gnome.org/glib/stable/glib-Random-Numbers.html GNOME developers - Random numbers]
+
* https://developer.gnome.org/glib/stable/glib-Random-Numbers.html

Versione delle 14:04, 20 gen 2018

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 dinamica condivisa: "libglib-2.0.so"


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"

' 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