La generazione di numeri casuali

La soluzione di un problema può, a volte, richiedere di eseguire alcune azioni in modo casuale.
Spesso, per questo tipo di necessità, si ricorre alla generazione di numeri casuali.
Un numero è detto casuale quando il suo valore è determinato da una apposita funzione, che restituisce numeri differenti ad ogni invocazione.

Flowgorithm mette a disposizione una funzione chiamata Random per far fronte a questa esigenza.

La funzione Random riceve in input un valore numerico e genera numeri casuali maggiori o uguali a 0 e minori del valore ricevuto in input.

Vediamo ora come tale funzione può essere utilizzata per generare numeri compresi in intervalli specifici.

Per generare numeri dell'intervallo 0 ... 9 (estremi compresi) occorrerà eseguire l'istruzione

Random(10)

Per generare numeri dell'intervallo 1 ... 10 (estremi compresi) occorrerà eseguire l'istruzione

1 + Random(10)

Per generare numeri dell'intervallo 101 ... 150 (estremi compresi) occorrerà eseguire l'istruzione

101 + Random(50)

In generale, ogni volta che dobbiamo generare numeri in un intervallo determinato da un valore minimo (min) ed un valore massimo (max), dobbiamo considerare i due dati che seguono:

  • il valore minimo (min) dell'intervallo
  • la quantità (qta) di numeri dell'intervallo, ossia la differenza tra il valore massimo ed il valore minimo, incrementata di uno.

Nell'esempio precedente dei numeri dell'intervallo 101 ... 150, il valore minimo (min) è uguale a 101 e la quantità (qta) è uguale alla differenza tra 150 e 101, più 1, ossia 150-101+1=50.

In conclusione possiamo definire le seguenti formule generiche:

    Se abbiamo i valori minimo e massimo 
    dell'intervallo di numeri da generare 
    in due variabili, rispettivamente, min e max 
    e calcoliamo qta come segue
    qta = max - min + 1
    possiamo generare un numero casuale
    intero nell'intervallo min ... max
    con la formula seguente
    casuale_min_max = min + Random(qta)
    oppure, sostituendo il valore di qta
    con la sua espressione, con la formula che segue
    casuale_min_max = min + Random(max - min + 1)