Lezione 7
Lezione 7
Numeri Casuali

In questa settima lezione affronteremo l'implementazione di un generatore di numeri casuali. Lo
utilizzeremo quindi per generare numeri secondo una distribuzione Gaussiana. Infine utilizzeremo dei
metodi Monte Carlo per calcolare l'area del cerchio e per verificare il Teorema del Limite Centrale.

ESERCIZIO 7.0 - Generatore di numeri casuali (da consegnare):
Scrivere una classe che implementi un generatore di numeri pseudocasuali lineare congruenziale,
con parametri a = 1664525, c = 1013904223 e m = 231. L'header della classe è dato qui di seguito:
Classe Random

La keyword unsigned indica che il tipo seguente deve essere considerato senza segno, lasciando
così un bit in più alla rappresentazione del numero. L'utilizzo di unsigned è necessario con i parametri
dai noi scelti per evitare problemi di overflow degli interi nelle operazioni.
Scrivere un programma che utilizzi il generatore implementato e:
  1. riempia un istogramma con 100000 numeri casuali tra 0 e 1;
  2. verifichi che il periodo del generatore con parametri a = 4, c = 1, m = 9 è molto limitato.

Brevi richiami
Generatore Lineare congruenziale

Istogrammi con ROOT

Compilare con classi ROOT

ESERCIZIO 7.1 - Generare numeri con distribuzione Gaussiana(da consegnare):
Aggiungere al generatore già creato due metodi per generare numeri distribuiti come una Gaussiana di
media μ e sigma σ. Il primo metodo deve implementare la formula di Box-Muller (vedi esempio sotto), il
secondo il metodo accept-reject. Scrivere un programma che generi 100000 numeri casuali con ciascun
metodo con i parametri μ = σ = 1 e riempia due istogrammi con tali numeri.

Brevi richiami
Metodo di Box Muller

Metodo Accept-Reject

Disegnare su più canvas

ESERCIZIO 7.2 - Calcolo dell'area del cerchio(da consegnare):
Scrivere un programma che calcoli l'area di un cerchio di raggio unitario sfruttando il generatore
implementato negli esercizi precedenti.
Si devono generare punti casuali in un quadrato circoscritto al cerchio e calcolare il rapporto tra i punti
che cadono all'interno del cerchio rispetto al numero totale di punti generati.
Il programma deve leggere da linea di comando il numero di punti generati.
Suggerimento: è sufficiente concentrarsi su un quarto di cerchio...

ESERCIZIO 7.3 - Verifica del Teorema del Limite Centrale(da consegnare):
Generare una serie di numeri casuali uniformemente distribuiti in [0,1] e calcolare la somma eseguita su
un numero n di elementi consecutivi della serie generata.
Calcolare la varianza della serie di numeri generata e della serie delle somme. Verificare che questa scala
con n. Passare da riga di comando sia il numero di elementi della serie di partenza (10000 può essere un
buon numero) ed il numero di elementi su cui fare la somma.
Creare due istogrammi che contengano la distribuzione dei numeri generata e la distribuzione delle somme.
Verificare come cambia la distribuzione delle somme al variare di n.

Brevi richiami
Il Teorema del Limite Centrale



Back to Home Page