Numeri casuali
...
Nei linguaggi di programmazione compare una funzione/metodo per la generazione di numeri casuali distribuiti uniformemente.
| Linguaggio | Funzione | Intervallo |
|---|---|---|
| Java | Math.random() | [0.0 1.0) |
| Javascript | ||
| GeoGebra | random() | |
| TurboPascal 6 | Random | |
| VisualBasic 6 | Rnd() |
Intervallo
Tramite una semplice elaborazione è possibile generare numeri casuali interi in un intervallo a piacere| INTERVALLO | CODIFICA (Java) | COMMENTO |
|---|---|---|
| [0.0, 1.0) | Math.random() | Genera un numero casuale reale |
| [0.0, SUP) | SUP*Math.random() | Moltiplica per SUP |
| [0, SUP-1] | (int)(SUP*Math.random()) | Casting a intero |
| [1, SUP] | (int)(SUP*Math.random())+1 | +1, genera un numero casuale intero da 1 a SUP |
| [INF, SUP+INF-1] | (int)(SUP*Math.random())+INF | Aggiunge INF invece di 1 |
| [INF, SUP] | (int)((SUP-INF+1)*Math.random())+INF | Cambia il fattore moltiplicativo genera un numero casuale intero da INF a SUP |
| int QUANTI=SUP-INF+1; x=(int)(QUANTI*Math.random())+INF; | Con una variabile di appoggio è più leggibile... |
Esercizi
Nella programmazione elementare si hanno esigenze limitate a pochi casi- moneta, testa/croce, 0/1
- dado, da 1 a 6
- due dadi, da 2 a 12 (ma...)
- carte da gioco francesi
- 1..52
- 1...13
cuori, quadri, fiori, picche - carte da gioco napoletane
- 1..40
- 1...10
bastoni, coppe, denari, spade - tombola, da 1 a 90
- ...
Distribuzione?
Con- un generatore di numeri casuali con distribuzione uniforme e
- la trasformazione matematica appropriata
- un generatore di numeri casuali con distribuzione qualsiasi.