NUMERI CASUALI E SIMULAZIONE
|
|
|
- Giada Pucci
- 9 anni fa
- Просмотров:
Транскрипт
1 NUMERI CASUALI E SIMULAZIONE NUMERI CASUALI Usati in: statistica programmi di simulazione... Strumenti: - tabelle di numeri casuali - generatori hardware - generatori software
2 DESCRIZIONE DEL PROBLEMA Un programma che usa numeri casuali richiede un generatore software una macchina virtuale software è deterministica, quindi non può generare numeri veramente casuali È possibile ideare algoritmi per la generazione di numeri apparentemente casuali In questo caso otteniamo un generatore di numeri pseudo-casuali REQUISITI PER UN PROGRAMMA GENERATORE L'obiettivo teorico è generare serie infinite di numeri statisticamente indipendenti all'interno di un dato intervallo, ad esempio (0,1), intervallo aperto Il generatore deve essere: efficiente - ripetibile - programmi di simulazione possono doverlo attivare milioni di volte la stessa sequenza deve poter essere rigenerata a piacere Nel 1951 D.H. Lehmer ha proposto un algoritmo parametrico che, per una opportuna scelta dei parametri, ha superato numerosi test empirici di casualità Numeri casuali e simulazione 2
3 Generatore di Lehmer Siano dati: i) modulo: m intero, primo, grande ii) moltiplicatore: a intero, 1 < a < m iii) funzione f(z): z n+1 = a * z n mod m iv) seme: z 1 intero, 1 z 1 m-1 v) normalizzazione u n = z n / m poichè m è primo, la funzione non produce mai 0 per 1 z m-1, quindi la sequenza non collassa mai a 0 (diversamente sarebbe possibile a1 * m1 * z1 * m2 mod m1 * m2 = 0) la normalizzazione v) non influenza l'apparente casualità della sequenza la sequenza non ha, ovviamente, nulla di casuale, ma per una opportuna scelta di a ed m non è distinguibile da una vera sequenza casuale fissati a ed m, risulta fissata la lunghezza del periodo p (p<=m), tale che z p =z 1 definiamo sequenza a periodo completo una permutazione dei numeri 1,...,m-1 esistono coppie di valori a ed m che generano sequenze a periodo completo il seme influenza soltanto il punto di partenza della sequenza, ma non l'ordine i valori di u saranno 1/m, 2/m,..., (m-1)/m, con media 1/2 e σ 1/ 12 Esempio: f(z) = 6z mod ,6,10,8,9,2,12,7,3,5,4,11,1... Numeri casuali e simulazione 3
4 UNA SOLUZIONE EFFICACE occorre trovare coppie di parametri a ed m a periodo completo con periodo sufficientemente lungo: per m = esistono 534 milioni di moltiplicatori adatti occorre implementare la funzione f(z) in modo efficiente e coerente con le possibilità di rappresentazione numerica di una specifica macchina a=16807 ed m = generano sequenze a periodo completo che hanno superato numerosi test statistici di casualità, ma, per una implementazione diretta della funzione di generazione, richiedono l'utilizzo di interi a 46 bit per contenere il massimo valore del prodotto a * z ogni sequenza deve essere inizializzata attribuendo un valore al seme la libreria stdlib.h del linguaggio C mette a disposizione la funzione rand() che produce un numero intero pseudo-casuale compreso fra 0 e RAND_MAX (costante pre-definita anch essa in stdlib.h) Numeri casuali e simulazione 4
5 ESEMPIO DI UTILIZZO DI rand() #include <stdlib.h> #include <stdio.h> #define N 10 int main(){ int i,r; printf( %d numeri a caso fra 0 e %d \n,n,rand_max); for (i=0;i<n;i++){ /* genera N numeri casuali */ r = rand(); printf( %d\n,r); return 0; si noti che successive esecuzioni di questo programma producono sempre lo stesso numero, perche all avvio del programma il seme viene sempre reinizializzato a 1 Numeri casuali e simulazione 5
6 se si vogliono generare sequenze diverse a ogni esecuzione è possibile utilizzare la funzione srand() per assegnare un valore al seme si può riottenere la stessa sequenza, per riprodurre uno stesso esperimento, riassegnando lo stesso valore #include <stdlib.h> #include <stdio.h> #define N 10 int main(){ int i,r; unsigned int s; /* seme */ printf( Inserire un numero per inizializzare la sequenza: ); scanf( %d,&s); srand(s); printf( %d numeri a caso fra 0 e %d \n,n,rand_max); for (i=0;i<n;i++){ /* genera N numeri casuali */ r = rand(); printf( %d\n,r); return 0; Numeri casuali e simulazione 6
7 Generazione di un numero intero con distribuzione uniforme fra 0 e 1 è sufficiente dividere il risultato di random per RAND_MAX double randr(){ return (double)rand()/rand_max; Generazione di uno fra n eventi con probabilità discreta p i sia P k = k " p i,1! k! n, probabilità cumulativa, P n = 1 i=1 si genera l'evento e i se P i-1 < randr P i (P 0 =0) la probabilità dell'evento e i è pari all'ampiezza dell'intervallo P i - P i-1 = p i Numeri casuali e simulazione 7
8 Distribuzione normale (cfr. teorema del limite centrale) È noto che una distribuzione normale è il limite della somma di variabili casuali con distribuzione uniforme date DN variabili indipendenti con distribuzione uniforme, media m e deviazione standard σ, la funzione z = (x x DN -DN*m)/σ *sqrt(12) approssima una variabile con distribuzione normale, valore medio 0 e deviazione standard 1 la somma di 12 valori ottenuti da RandR approssima una distribuzione normale con media 6 e σ=1 Osservazione: randnorm produce valori nell'intervallo m ± 6 σ Numeri casuali e simulazione 8
Laboratorio di Calcolo I. Applicazioni : Metodo Monte Carlo
Laboratorio di Calcolo I Applicazioni : Metodo Monte Carlo 1 Monte Carlo Il metodo di Monte Carlo è un metodo per la risoluzione numerica di problemi matematici che utilizza numeri casuali. Si applica
CALCOLO NUMERICO. Prof. Di Capua Giuseppe. Appunti di Informatica - Prof. Di Capua 1
CALCOLO NUMERICO Prof. Di Capua Giuseppe Appunti di Informatica - Prof. Di Capua 1 INTRODUZIONE Quando algoritmi algebrici non determinano la soluzione di un problema o il loro «costo» è molto alto, allora
Introduzione al C. Esercitazione 6. Raffaele Nicolussi. Corso di Fondamenti di Informatica Ingegneria Clinica
Corso di Fondamenti di Informatica Ingegneria Clinica Esercitazione 6 Raffaele Nicolussi Esercizio 1 Si scriva una funzione in linguaggio C che riceve in ingresso un numero intero A letto da tastiera,
Scuola di Calcolo Scientifico con MATLAB (SCSM) 2017
Scuola di Calcolo Scientifico con MATLAB (SCSM) 2017 Palermo 24-28 Luglio 2017 www.u4learn.it Arianna Pipitone Introduzione alla probabilità MATLAB mette a disposizione degli utenti una serie di funzioni
Generazione di numeri casuali
Generazione di numeri casuali Abbiamo già accennato all idea che le tecniche statistiche possano essere utili per risolvere problemi di simulazione di processi fisici e di calcoli numerici. Dobbiamo però
Algoritmi in C++ (prima parte)
Algoritmi in C++ (prima parte) Alcuni algoritmi in C++ Far risolvere al calcolatore, in modo approssimato, problemi analitici Diverse tipologie di problemi generazione di sequenze di numeri casuali ricerca
Laboratorio di Programmazione: Linguaggio C Lezione 9 del 27 novembre 2013
Laboratorio di Programmazione: Linguaggio C Lezione 9 del 27 novembre 2013 Damiano Macedonio Giochi d Azzardo Note Iniziali Per generare un numero casuale basta includere la libreria stdlib.h e utilizzare
Programmazione I - Laboratorio
Programmazione I - Laboratorio Esercitazione 3 - Array Gianluca Mezzetti 1 Paolo Milazzo 2 1. Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ mezzetti mezzetti di.unipi.it 2. Dipartimento
Generazione di numeri random. Distribuzioni uniformi
Generazione di numeri random Distribuzioni uniformi I numeri random Per numero random (o numero casuale) si intende una variabile aleatoria distribuita in modo uniforme tra 0 e 1. Le proprietà statistiche
Simulazione dei dati
Simulazione dei dati Scopo della simulazione Fasi della simulazione Generazione di numeri casuali Esempi Simulazione con Montecarlo 0 Scopo della simulazione Le distribuzioni di riferimento usate per determinare
Uso delle funzioni della libreria GSL
Uso delle funzioni della libreria GSL Luca Mazzei 1 Configurazione di GSL in Dev-C++ Per utilizzare le librerie con Dev-C++ occorre configurare l ambiente. Dopo aver aperto l ambiente selezionare la voce
Generatori di numeri casuali
Statistica computazionale Generatori di numeri casuali Alberto Lusoli www.cash-cow.it Distribuito sotto licenza Creative Common Share Alike Attribution La generazione dei numeri casuali è troppo importante
Numeri Random. D.E.I.S. Università di Bologna DEISNet
Numeri Random D.E.I.S. Università di Bologna DEISNet http://deisnet.deis.unibo.it/ Introduzione Può sembrare assurdo usare un computer per generare numeri casuali: Il computer è una macchina deterministica
Metodi Computazionali della Fisica Secondo Modulo: C++
Metodi Computazionali della Fisica Secondo Modulo: C++ Seconda Lezione Andrea Piccione () Metodi Comptazionali della Fisica - Secondo Modulo: C++ Milano, 09/1/08 1 / 9 La lezione di oggi Obiettivo: implementare
- noise di conteggio ; f[m] è un numero intero che è la realizzazione di una variabile aleatoria con valor medio (valore atteso) f 0 [m].
Segnali con noise Sia f [m], m,,..., N-, il campionamento del segnale in arrivo sul rivelatore; il segnale campionato in uscita f[m] differisce da f [m] per quantità che variano in modo casuale. Si hanno
Teoria dei Fenomeni Aleatori AA 2012/13
Simulazione al Calcolatore La simulazione al calcolatore (computer simulation), (nel caso qui considerato simulazione stocastica) si basa sulla generazione, mediante calcolatore, di sequenze di numeri
PROBABILITA. Distribuzione di probabilità
DISTRIBUZIONI di PROBABILITA Distribuzione di probabilità Si definisce distribuzione di probabilità il valore delle probabilità associate a tutti gli eventi possibili connessi ad un certo numero di prove
2.3.1 Generazione di numeri pseudocasuali con distribuzione uniforme
GENERAZIONE DI OSSERVAZIONI CASUALI 145 2.3 GENERAZIONE DI OSSERVAZIONI CASUALI Una volta determinate le distribuzioni di input, la simulazione dovrà generare durante ogni esecuzione osservazioni casuali
LA DISTRIBUZIONE NORMALE o DI GAUSS
p. 1/2 LA DISTRIBUZIONE NORMALE o DI GAUSS Osservando gli istogrammi delle misure e degli scarti, nel caso di osservazioni ripetute in identiche condizioni Gli istogrammi sono campanulari e simmetrici,
Introduzione alla probabilità. Renato Mainetti
Introduzione alla probabilità Renato Mainetti Esperimenti sulla probabilità: Vedremo come utilizzare semplici funzioni di matlab per avvicinarci al mondo della probabilità, iniziando così ad introdurre
Il generatore di numeri casuali
Il generatore di numeri casuali file di libreria: stdlib.h int rand(void) La funzione restituisce un numero casuale di tipo intero compreso tra 0 e RAND_MAX (estremi compresi) Esempio: scriviamo un programma
Esercitazione 6. Array
Esercitazione 6 Array Arrays Array (o tabella o vettore): è una variabile strutturata in cui è possibile memorizzare un numero fissato di valori tutti dello stesso tipo. Esempio int a[6]; /* dichiarazione
Lezione 21 e 22. Valentina Ciriani ( ) Laboratorio di programmazione. Laboratorio di programmazione. Lezione 21 e 22
Lezione 21 e 22 - Allocazione dinamica delle matrici - Generazione di numeri pseudocasuali - Funzioni per misurare il tempo - Parametri del main - Classificazione delle variabili Valentina Ciriani (2005-2008)
Unità Didattica 4 Linguaggio C. Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo.
Unità Didattica 4 Linguaggio C Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo. 1 Vettori Struttura astratta: Insieme di elementi dello stesso tipo, ciascuno individuato da un indice;
Corso di Laboratorio 2 Programmazione C++ Silvia Arcelli. 9 Novembre 2015
Corso di Laboratorio 2 Programmazione C++ Silvia Arcelli 9 Novembre 2015 1 Generazione di numeri casuali Numeri casuali: valore assunto da una variabile aleatoria, il cui valore è per definizione impredicibile
Il metodo Monte Carlo. Esempio di transizione al caos. Numeri (pseudo)casuali. λ 1. Analisi dati in Fisica Subnucleare
Analisi dati in Fisica Subnucleare Introduzione al metodo Monte Carlo (N.B. parte di queste trasparenze sono riciclate da un seminario di L. Lista) Il metodo Monte Carlo È una tecnica numerica che si basa
Espressione di chiamata di funzione
Avvertenza Quanto segue NON è un libro, ma è una copia dei lucidi usati a lezione che NON sostituisce i libri di testo adottati e consigliati per l insegnamento di Informatica Generale. Questa copia è
Politecnico di Torino Sede di Alessandria Corso di informatica Programmazione in c: introduzione. e mail: sito: users.iol.
Politecnico di Torino Sede di Alessandria Corso di informatica Programmazione in c: introduzione prof. Lorenzo Porcelli e mail: [email protected] sito: users.iol.it/genna18 Risoluzione di un problema Dato
9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
9 - Array Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso di Laurea
INFORMATICA DI BASE Linguaggio C Prof. Andrea Borghesan
INFORMATICA DI BASE Linguaggio C Prof. Andrea Borghesan venus.unive.it/borg [email protected] Ricevimento lunedì, prima o dopo lezione 1 Le funzioni in C Le funzioni vengono utilizzate per 3 motivi: Riusabilità
Algoritmi in C++ (seconda parte)
Algoritmi in C++ (seconda parte) Introduzione Obiettivo: imparare a risolvere problemi analitici con semplici programmi in C++. Nella prima parte abbiamo imparato: generazione di sequenze di numeri casuali
Metodi Computazionali. Generazione di numeri pseudocasuali
Metodi Computazionali Generazione di numeri pseudocasuali A.A. 2009/2010 Pseudo random numbers I più comuni generatori di numeri random determinano il prossimo numero random di una serie come una funzione
La programmazione in linguaggio C
FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Ing. DAVIDE PIERATTONI Facoltà di Ingegneria Università degli Studi di Udine La programmazione in linguaggio C 2001 Pier Luca Montessoro - Davide Pierattoni
Linguaggio C - le strutture di controllo: sequenza, selezione, iterazione
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C - le strutture di controllo: sequenza, selezione, iterazione
Esercitazione 4. Comandi iterativi for, while, do-while
Esercitazione 4 Comandi iterativi for, while, do-while Comando for for (istr1; cond; istr2) istr3; Le istruzioni vengono eseguite nel seguente ordine: 1) esegui istr1 2) se cond è vera vai al passo 3 altrimenti
Algoritmi di ordinamento: Array e ricorsione
Laboratorio di Algoritmi e Strutture Dati Aniello Murano http://people.na.infn.it people.na.infn.it/~murano/ 1 Algoritmi di ordinamento: Array e ricorsione 2 1 Indice Algoritmi di ordinamento: Insertion
Esercitazione 11. Liste semplici
Esercitazione 11 Liste semplici Liste semplici (o lineari) Una lista semplice (o lineare) è una successione di elementi omogenei che occupano in memoria una posizione qualsiasi. Ciascun elemento contiene
Tipi di dati strutturati e Linguaggio C. Record o strutture Il costruttore struct in C
Tipi di dati strutturati e Linguaggio C Record o strutture Il costruttore struct in C Dati strutturati Record Un record o struttura è una struttura dati ottenuta aggregando elementi di tipo diverso che
1 (4) 2 (4) 3 (12) 4 (6) 5 (6)
CORSO DI LAUREA IN INGEGNERIA ELETTRICA, CHIMICA e MATERIALI Informatica B, C Anno Accademico 2016-2017 Proff. Danilo ARDAGNA Prima Prova in Itinere 4.5.2017 Cognome Nome Matricola Firma Durata: 2h Valutazioni
Le funzioni, e le istruzioni di input/output
Linguaggio C Le funzioni, e le istruzioni di input/output 1 Funzioni! Sono sottoprogrammi per svolgere un particolare compito! Sequenze di istruzioni (raggruppate tramite le parentesi graffe) alle quali
Esercizi di programmazione in C
Esercizi di programmazione in C Esercizio 1 Scrivere un programma in linguaggio C che legga da tastiera una sequenza di lunghezza ignota a priori di numeri interi positivi. Il programma, a partire dal
IL PRIMO PROGRAMMA IN C
IL PRIMO PROGRAMMA IN C LO SCOPO Si vuole scrivere un programma in linguaggio C che chieda all utente di introdurre da tastiera due numeri interi e visualizzi il valore della loro somma sul video SOLUZIONE
Massimo Benerecetti Tabelle Hash: gestione delle collisioni
Massimo Benerecetti Tabelle Hash: gestione delle collisioni # Lezione n. Parole chiave: Corso di Laurea: Informatica Insegnamento: Algoritmi e Strutture Dati I Email Docente: [email protected] A.A. 2009-2010
PROBABILITÀ ELEMENTARE
Prefazione alla seconda edizione XI Capitolo 1 PROBABILITÀ ELEMENTARE 1 Esperimenti casuali 1 Spazi dei campioni 1 Eventi 2 Il concetto di probabilità 3 Gli assiomi della probabilità 3 Alcuni importanti
PROBABILITÀ - SCHEDA N. 3 VARIABILI ALEATORIE CONTINUE E SIMULAZIONE
PROBABILITÀ - SCHEDA N. 3 VARIABILI ALEATORIE CONTINUE E SIMULAZIONE (da un idea di M. Impedovo Variabili aleatorie continue e simulazione Progetto Alice n. 15, ) 1. La simulazione Nelle schede precedenti
Sperimentazioni di Fisica I mod. A Statistica - Lezione 2
Sperimentazioni di Fisica I mod. A Statistica - Lezione 2 A. Garfagnini M. Mazzocco C. Sada Dipartimento di Fisica G. Galilei, Università di Padova AA 2014/2015 Elementi di Statistica Lezione 2: 1. Istogrammi
Teorema del limite centrale TCL
Teorema del limite centrale TCL Questo importante teorema della statistica inferenziale si applica a qualsiasi variabile aleatoria che sia combinazione lineare di N variabili aleatorie le cui funzioni
Perché il linguaggio C?
Il linguaggio C 7 Perché il linguaggio C? Larga diffusione nel software applicativo Standard di fatto per lo sviluppo di software di sistema Visione a basso livello della memoria Capacità di manipolare
Modelli e Metodi per la Simulazione (MMS)
Modelli e Metodi per la Simulazione (MMS) [email protected] Programma La simulazione ad eventi discreti, è una metodologia fondamentale per la valutazione delle prestazioni di sistemi complessi (di
Ogni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo.
Ogni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo. int a = 5; a 5 α=&a Esistono in C particolari variabili dette puntatori che possono
L'Allocazione Dinamica della Memoria nel linguaggio C
L'Allocazione Dinamica della Memoria nel linguaggio C Prof. Rio Chierego [email protected] http://www.riochierego.it/informatica.htm Sommario Questo documento tratta l'allocazione dinamica della memoria
La simulazione con DERIVE Marcello Pedone LE SIMULAZIONI DEL LANCIO DI DADI CON DERIVE
LE SIMULAZIONI DEL LANCIO DI DADI CON DERIVE Premessa Abbiamo già visto la simulazione del lancio di dadi con excel Vedi: http:///statistica/prob_simu/index.htm Ci proponiamo di ottenere risultati analoghi
Primi passi col linguaggio C
Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Come introdurre un linguaggio di programmazione? Obiettivi: Introduciamo una macchina astratta
Sommario. Capitolo 1 I dati e la statistica 1. Capitolo 2 Statistica descrittiva: tabelle e rappresentazioni grafiche 25
Sommario Presentazione dell edizione italiana Prefazione xv xiii Capitolo 1 I dati e la statistica 1 Statistica in pratica: BusinessWeek 1 1.1 Le applicazioni in ambito aziendale ed economico 3 Contabilità
MODELLISTICA DI IMPIANTI E SISTEMI Syllabus e Testi di Riferimento Prof. Giuseppe Iazeolla
Syllabus e Testi di Riferimento MIS 1 di 7 MODELLISTICA DI IMPIANTI E SISTEMI Syllabus e Testi di Riferimento Prof. Giuseppe Iazeolla Syllabus da testo 1 (la numerazione fa riferimento ai capitoli del
Probabilità e numeri casuali Teoria e programmazione Pascal e C++
Probabilità e numeri casuali Teoria e programmazione Pascal e C++ 1 Definizioni Evento 2 Direzione entrate speciali Del ministero delle finanze 3 4 5 6 Definizioni: La probabilità di un evento È un numero
PROGRAMMAZIONE: ESERCITAZIONE N. 6
PROGRAMMAZIONE: ESERCITAZIONE N. 6 Esercizi su stru+ure condizionali e itera1ve Conoscenze richieste: LC1+LC2+LC3+LC4+LC5+LC6 Esercizio 1 Acquisire un numero positivo N e calcolarne la radice quadrata
Distribuzioni di probabilità e principi del metodo di Montecarlo. Montecarlo
Distribuzioni di probabilità e principi del metodo di Montecarlo Simulazione di sistemi complessi Distribuzioni di probabilità Istogrammi Generazione di numeri casuali Esempi di applicazione del metodo
Stringhe e allocazione dinamica della memoria
Stringhe e allocazione dinamica della memoria Esercizio Scrivere un programma strings.c che legge da standard input una sequenza di parole separate da uno o più spazi, e stampa le parole lette, una per
ERRATA CORRIGE. void SvuotaBuffer(void); void SvuotaBuffer(void) { if(getchar()!=10) {svuotabuffer();} }
ERRATA CORRIGE Pulizia del buffer di input: come fare? (1) Dopo aver richiamato getchar() per prelevare un carattere dal buffer di input, inseriamo una seconda chiamata a getchar(), senza assegnare il
Tipi di variabili. Indici di tendenza centrale e di dispersione
Tipi di variabili. Indici di tendenza centrale e di dispersione L. Boni Variabile casuale In teoria della probabilità, una variabile casuale (o variabile aleatoria o variabile stocastica o random variable)
Dati aggregati. Violetta Lonati
Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica - in breve: Definizione di tipi Array Stringhe Strutture
LA DISTRIBUZIONE NORMALE. La distribuzione Gaussiana. Dott.ssa Marta Di Nicola
LA DISTRIBUZIONE NORMALE http://www.biostatistica.unich.itit «È lo stesso delle cose molto piccole e molto grandi. Credi forse che sia tanto facile trovare un uomo o un cane o un altro essere qualunque
Modulo Simulazione Parte 1. Simulazione ad Eventi Discreti: Concetti Base. Organizzazione del modulo
Modulo Simulazione Parte 1 Simulazione ad Eventi Discreti: Concetti Base Ing. R.G. Garroppo Organizzazione del modulo Simulazione ad eventi discreti: concetti base Testo: J. Banks, J.S. Carson, B.L. Nelson
