fisica:informatica:201617:esercitazione3rand
Differenze
Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
Entrambe le parti precedenti la revisioneRevisione precedenteProssima revisione | Revisione precedente | ||
fisica:informatica:201617:esercitazione3rand [03/03/2017 alle 08:50 (9 anni fa)] – Susanna Pelagatti | fisica:informatica:201617:esercitazione3rand [06/02/2018 alle 08:55 (8 anni fa)] (versione attuale) – [Esercizio 7: Usiamo il generatore] Susanna Pelagatti | ||
---|---|---|---|
Linea 49: | Linea 49: | ||
</ | </ | ||
- | ===== Esercizio 2: Generazione di numero | + | ===== Esercizio 2: Generazione di numeri |
- | Modificare l' | + | Modificare l' |
===== Esercizio 3: Generazione di numero casuali reali ===== | ===== Esercizio 3: Generazione di numero casuali reali ===== | ||
Scrivere un programma C che legge dallo standard input un numero N di reali da generare e stampa sullo standard output una sequenza di N numeri casuali reali nell' | Scrivere un programma C che legge dallo standard input un numero N di reali da generare e stampa sullo standard output una sequenza di N numeri casuali reali nell' | ||
- | // | ||
- | ===== Esercizio | + | |
+ | ===== Esercizio | ||
+ | Per restringersi all' | ||
+ | < | ||
+ | A+(int)((B-A)*rand()/ | ||
+ | </ | ||
+ | oltre a | ||
+ | < | ||
+ | A+rand()%(B-A + 1) | ||
+ | </ | ||
+ | Utilizzare entrambe per generare sequenze di interi nell' | ||
+ | ci sono differenze nella distribuzione valori ottenuti ? | ||
+ | |||
+ | ===== Esercizio 6: Realizziamo un generatore di numeri pseudo-casuali ===== | ||
+ | Un semplice (ma efficace) generatore di sequenze di numeri pseudo-casuali utilizza il metodo della congruenza lineare. Questo metodo genera una sequenza di numeri $x_i$ a partire da un valore iniziale noto (il //seme)// $x_0$. | ||
+ | In generale, l’elemento $x_{i + 1}$ della sequenza è dato dalla formula: | ||
+ | \begin{align}\label{eq: | ||
+ | x_{i + 1} &= (a * x_i + b) \% M\\ | ||
+ | \end{align} | ||
+ | |||
+ | i parametri $a$ (motiplicatore), | ||
+ | |||
+ | Alcuni valori per $M$, $a$ e $b$ consigliati in letteratura sono: | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | * | ||
+ | |||
+ | Scrivere un programma C che inizializza i parametri $a$, $b$, $M$ (a scelta dello studente), legge in input il seme $x_0$, e stampa i primi 100 numeri pseudo casuali della sequenza. | ||
+ | |||
+ | //Nota: Attenzione all' | ||
+ | |||
+ | |||
+ | ===== Esercizio 7: Usiamo il generatore ===== | ||
+ | |||
+ | Sulla base dell' | ||
+ | |||
+ | |||
+ | ===== Esercizio 8: La macchina di Galton ===== | ||
La macchina di Galton (Galton Board) e' un dispositivo ideato nella seconda meta dell' | La macchina di Galton (Galton Board) e' un dispositivo ideato nella seconda meta dell' | ||
per illustrare in modo semplice il teorema del limite centrale. | per illustrare in modo semplice il teorema del limite centrale. | ||
Linea 87: | Linea 124: | ||
E' facile convincersi che la posizione di arrivo nel punto piu' basso puo' assumere tutti i valori tra 1 e n+1 (non con la stessa probabilita' | E' facile convincersi che la posizione di arrivo nel punto piu' basso puo' assumere tutti i valori tra 1 e n+1 (non con la stessa probabilita' | ||
- | Realizzare un programma C che letto il numero | + | Realizzare un programma C che letto il numero |
- | + | ||
- | ===== Esercizio 5: Ma quanto siamo casuali ? ===== | + | |
- | Per restringersi all' | + | |
- | < | + | |
- | A+((B-A+1.0)*rand()/ | + | |
- | </ | + | |
- | oltre a | + | |
- | < | + | |
- | A+rand()%(B-A + 1.0) | + | |
- | </ | + | |
- | Utilizzare entrambe per generare sequenze di interi nell' | + | |
- | ci sono differenze nella distribuzione valori ottenuti ? | + | |
- | + | ||
+ | ===== Esercizio 9: Simulazione di un moto Browniano discreto ===== | ||
+ | |||
+ | Scrivere un programma C che simula il moto di una particella che si muove di moto casuale su un piano, in un’area quadrata delimitata dagli assi $x=0$, $y=0$ e dalle rette $x=200$, $y=200$. All' | ||
+ | All’istante $i+1$, le coordinate della particella sono calcolate come: | ||
+ | \begin{align} | ||
+ | x_{i+1} = x_i + A\\ | ||
+ | y_{i+1} = y_i + B | ||
+ | \end{align} | ||
+ | Dove A e B sono due numeri double pseudo-casuali compresi nell’intervallo [-1,1]. Per la generazione di A e di B il programma usa separatamente due semi A0 e B0 letti da tastiera (invece, se si usa il generatore dell' | ||
+ | |||
+ | Il programma C termina quando la particella raggiunge (o supera) gli estremi dell’area, | ||
+ | |||
+ | //Nota: bisogna avere pazienza....// |
fisica/informatica/201617/esercitazione3rand.1488531020.txt.gz · Ultima modifica: 03/03/2017 alle 08:50 (9 anni fa) da Susanna Pelagatti