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)