• Non ci sono risultati.

Numeri pseudocasuali

N/A
N/A
Protected

Academic year: 2021

Condividi "Numeri pseudocasuali"

Copied!
10
0
0

Testo completo

(1)

Numeri pseudocasuali

“Numeri casuali non devono essere generati con un metodo scelto a caso” D.Knuth

Il periodo deve essere il pi` u lungo possibile;

la distribuzione deve essere uniforme in [0, 1]

p(x)=costante in [0, 1];

le correlazioni devono essere trascurabili

D

x

n+1

· x

nE

D

x

n+1E

hx

n

i = 0;

distribuzioni uniformi:

– metodi lineari congruenti;

– metodi Fibonacci lagged;

– metodi non lineari, etc

distribuzioni non uniformi:

– distribuzione gaussiana e metodo di Box- M¨ uller

– distribuzione qualsiasi;

(2)

Metodi lineari congruenti (LCM)

x

n+1

= (a · x

n

+ b) mod m;

di solito b = 0;

a ` e primo;

m ` e primo, oppure m = 2

n

Problema

overflow per moltiplicazione per a.

Soluzione

m = a · q + r con r < q scrivo x

n

= z · q + w allora

a · x

n

= a · (z · q + w) = a · q · z + a · w = (a · q + r) · z − r · z + a · w

a · x

n

= m · z − r · z + a · w

con r · z < q · z < x

n

< m e a · w < a · q < m

Quindi a · w − r · z ` e minore di m ed il risulato ` e a · x

n

mod m = a · w − r · z(+m) =

a · (x

n

mod m) − r · (x

n

/q) (+m) Esempio:

a = 16807 m = 2

31

= 2147483648

(3)

Metodi Fibonacci lagged

x

n+1

=

XN q=0

a

q

x

n−q

Simili alla successione di Fibonacci, ma con pi` u termini; di solito solo un paio di c

k

sono diversi da zero;

occorre una certa attenzione alle condizioni iniziali; si pu` o provare a usare LCM come

”starter” per i primi termini;

hanno periodo molto lungo e scarse corre- lazioni;

pi` u successioni indipendenti con la stessa

regola;

(4)

Esempio: r250

x

n

=

P250j=1

a

q

x

n−q

periodo N ≈ 2

250

a

q

= 0 escluso che per q = 103, 250 per cui a

q

= 1

quindi x

n

= x

n−103

+ x

n−250

in realt` a si usa xor: x

n

= x

n−103

xor x

n−250

memorizzo gli ultimi 250 termini in uno

stack circolare per non dover spostare ad

ogni passo un intero vettore

(5)

Metodo di Box-M¨ uller

Voglio una distribuzione gaussiana: se x

1

e x

2

sono distribuite uniformemente in (0, 1) definisco

y1 = p

−2 ln x1sin(2πx2) y2 = p

−2 ln x1 cos(2πx2)

Quindi x

1

= e

−(y12+y22)/2

e p(y

1

) p(y

2

) dy

1

dy

2

= p(x

1

) p(x

2

) dx

1

dx

2

= dx

1

dx

2

p(y

1

) p(y

2

) ∂(y

1

, y

2

)

∂(x

1

, x

2

) = 1

∂(y1, y2)

∂(x1, x2) =

¯¯

¯¯

¯

−1 x1

−2 ln x1 sin(2πx2) 2π√

−2 ln x1cos(2πx2)

−1 x1

−2 ln x1 cos(2πx2) −2π√

−2 ln x1 sin(2πx2)

¯¯

¯¯

¯

∂(y

1

, y

2

)

∂(x

1

, x

2

) = x

1

Percio‘ p(y1) p(y2) = x1 = 1

e−(y12+y22)/2 p(y1) = 1

√2πe−y12/2 p(y2) = 1

√2πe−y22/2

(6)

Distribuzioni qualsiasi

Se voglio ottenere una distribuzione con pro- babilit` a p(x) arbitraria limitata superiormente.

suppongo che mi interessi 0 ≤ x ≤ a

suppongo che p(x) ≤ b ∀x in [0, a]

scelgo un numero a caso x con distribuzione uniforme nel range [0, a]

scelgo un secondo numero a caso y con y²[0, b]

se y < p(x) accetto il numero, altrimenti

procedo con altri due numeri

(7)

Applicazioni

Integrazione con numeri pseudocasuali Data f (x) voglio calcolare

Z b

a

f (x) dx

dove so che f (x) ` e compresa tra zero e f

max

.

genero coppie di numeri che corrispondono a un punto nel rettangolo che ha lati tra a e b e tra zero e f

max

.

calcolo la percentuale P di punti che cadono sotto la curva y = f (x)

l’integrale vale P · (b − a) · f

max

(8)

Test di uniformit` a e correlazioni

0 0.5 1

x 0.0496

0.0498 0.05 0.0502 0.0504

frazione

0 0.2 0.4 0.6 0.8 1

x n

(9)

Problemi Volume di una sfera unitaria

x

2

+ y

2

+ z

2

≤ 1;

considero solo un ottante con x > 0, y >

0, z > 0;

genero una terna di numeri casuali x, y e z;

guardo se x

2

+ y

2

+ z

2

≤ 1, nel qual caso accetto la terna;

ripeto per un gran numero di terne;

alla fine divido le terne accettate per quelle totali;

moltiplico per 8;

nota: l’errore ` e O(1/ N ) Moto Browniano

prendo x = y = 0 inizialmente;

noto x al tempo t, al tempo successivo x

0

` e dato da x

0

= x + ²ξ

1

e y

0

= y + ²ξ

2

con

−1 ≤ ξ

1,2

≤ 1;

dopo N passi verifico che x

2

+ y

2

∼ N ²

2

;

(10)

Teorema del limite centrale

considero le somme ξ

1

. . . ξ

N

;

guardo come ` e distribuita la media al vari- are di N ;

per N grande devo trovare una distribuzione

gaussiana;

Riferimenti

Documenti correlati

Aiutati con lo schema seguente:. Numeri romani Numeri romani

I numeri razionali sono formati: da numeri interi, da numeri con la virgola con un numero finito di cifre decimali oppure con un numero infinito di cifre decimali periodiche.

I problemi da cui ha avuto origine il calcolo differenziale: il problema dell’area, il problema della tangente e della velocit` a, il limite di una successione e la somma di una

Come possiamo generare una lista di numeri (pseudo)casuali?... numeri pseudocasuali

[r]

[r]

2 Completa ogni relazione con un numero adatto. 958 600 &gt;

¨  Se la stringa di formato contiene un white space, la scanf legge zero o più white space, che verranno scartati, fino al primo carattere non white space.