Introduzione

Questa app mette in evidenza la correlazione che si può manifestare nei generatori di numeri random, in particolare se il generatore è di tipo lineare congruenziale.

Il programma pagina github genera numeri casuali appartenenti all’intervallo [0,1[. I numeri ottenuti vengono presi a coppie e rappresentati in un riferimento cartesiano x,y.

Per ottenere istanze di numeri casuali si può scegliere una della routine standard ran1, ran2 o ran3 (Numerical Recipes in C - second edition), il generatore Mersenne Twister, oppure si può definire da input i coefficienti di un generatore lineare congruenziale. Si ricorda che il significato dei coefficienti è il seguente:

Zi+1=(a*Zi +c) mod m

Per ottenere numeri appartenenti a [0,1[ si dividono le Zi per il termine m.

App

Select a Random numbers generator:

Seed
a
c
m
No. of points

Note

Per utilizzare le routines ran1, ran2, ran3 è necessario impostare un valore di seed negativo: questo serve per permettere la corretta inizializzazione del generatore, dopo della quale seed viene invertito di segno. Per quanto riguarda la definizione dei parametri del generatore lineare congruenziale si suggeriscono i seguenti esempi:

Esempio 1

seed=1;
a=3;
c=5;
m=1024;

es1

Il primo esempio mette in evidenza il problema della correlazione che si può manifestare nei generatori di numeri casuali lineari congruenziali. Ovviamente si tratta di un caso estremo.

Esempio 2

seed=1;
a=16807;
c=0;
m=2147483647;

es2

Questo esempio è stato proposto da Park e Miller come standard minimo di qualità per un generatore di numeri casuali.