Monte-Carlo per il Monopoli

Slides:



Advertisements
Presentazioni simili
I VETTORI.
Advertisements

La probabilità nei giochi
Laboratorio Processi Stocastici
Gli Elementi di Euclide
Strutture dati lineari
PROGRAMMARE IN PASCAL (le basi)
MATLAB.
MATLAB. Scopo della lezione Programmare in Matlab Funzioni Cicli Operatori relazionali Esercizi vari.
FUNZIONI DI BIBLIOTECA
PROGRAMMI DI RICERCA E ORDINAMENTO
Linguaggio MATLAB: costrutti tipici (IF,WHILE…)
Informatica di base A.A. 2003/2004 Algoritmi e programmi
MATLAB. …oggi… Programmare in Matlab Programmare in Matlab m-file m-file script script Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali.
MATLAB.
MATLAB. …oggi… Programmare in Matlab Programmare in Matlab Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali Indipendenza lineare,
MATLAB. …oggi… Programmare in Matlab Programmare in Matlab Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali Esercizi vari Esercizi.
Metodi numerici per equazioni lineari iperboliche Gabriella Puppo.
Metodi conservativi per equazioni iperboliche
CORSO DI PROGRAMMAZIONE II Introduzione alla ricorsione
La roulette di Badino, Mosetti e Tripodi
Soluzione di equazioni non lineari
Importazione di dati Nellambito dellutilizzo di qualsiasi software statistico una necessità è quella di importare dati esterni forniti dallutilizzatore.
Uso dei cicli y t =c+ty t-1 +e Un uso dei cicli può essere quello di creare una serie storica per cui y t =c+ty t-1 +e dove poniamo c e t scalari ed e~N(0,1).
Creazione di matrici Delimititatore di riga Delimititatore di matrice
Il linguaggio Fortran 90: 4. Array: Vettori e Matrici
LA PROBABILITA’.
Studente Claudia Puzzo
QuickSort Quick-Sort(A,s,d) IF s < d THEN q = Partiziona(A,s,d) Quick-Sort(A,s,q-1) Quick-Sort(A,q + 1,d)
Analisi dei gruppi – Cluster Analisys
Algebra matriciale e linguaggio matriciale in MATLAB
Strutture di controllo in C -- Flow Chart --
Problema Ci sono 5 signore nel parco. Ognuna di loro ha 1 figlio. Ogni bambino ha 10 figurine di calciatori, per un totale quindi di 50 figurine. Questi.
Teoria dei giochi Università degli Studi di Parma Parma,
Javascript 6 Funzioni. Una funzione sarà eseguita in risposta ad un evento o ad una chiamata diretta. Le funzioni possono essere inserite comodamente.
INTRODUZIONE A MATLAB.
Driver per motori passo-passo
Da 3 a 6 giocatori Età: da 14 anni in su Scopo del gioco Raggiungere per primi il proprio obiettivo segreto che ti viene assegnato dalle carte allinizio.
Esercizio 10.* Un cassiere vuole dare un resto di n centesimi di euro usando il minimo numero di monete. a) Descrivere un algoritmo goloso per fare ciò.
La probabilità Schema classico.
Radix-Sort(A,d) // A[i] = cd...c2c1
Cicli in Fortran I cicli consentono di eseguire una sequenza di istruzioni più di una volta due tipi: Cicli iterativi Cicli while.
Per valutare la complessità ammortizzata scomponiamo ogni Union: nelle due FindSet e nella Link che la costituiscono e valuteremo la complessità in funzione.
Prof. Cerulli – Dott.ssa Gentili
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 7: 13 Giugno 2013 Gianluca Durelli – Marco D. Santambrogio –
Conversione da base 10 a base X (Utilizzo della pila)
IDEA DI PROBABILITÀ MATEMATICA
Fici Arianna e Sammartano Maria Teresa
Mi viene voglia di scappare!
1/11/2015E. Giovannetti -- OI09.1 Olimpiadi di Informatica 2010 Giornate preparatorie Dipartimento di Informatica Università di Torino marzo –
Disposizione in campo iniziale e a inizio azione da rimessa dal fondo.
Mar-15 myDonor Italia © – documento riservato ad uso interno 1 1° Meeting Clienti myDonor® - Firenze 5 ottobre 2012 Estrattori & Target Matteo Calzolari.
Esercitazione 1 - Introduzione Matlab. MATrix LABoratory Command window Current Directory Comandi recenti Variabili correnti Contenuto cartella corrente.
Tutorial di gioco di AssistTheGame! 1° turno dell’Italia 2° Fase.
Allievi Elettrici - AA Le funzioni ricorsive in C
Università degli Studi di Roma “La Sapienza” Facoltà di Economia Foglio elettronico (Excel) Ambiente computazionale (Apl) Esercizi.
1 Analisi ammortizzata Si considera il tempo richiesto per eseguire, nel caso pessimo, una intera sequenza di operazioni. Se le operazioni costose sono.
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
I giochi con avversario Maria Simi a.a. 2008/2009.
RIMBORSO TASSE Ministero delle Finanze 21 Aprile 2010 A causa del significativo incremento nel gettito fiscale per l’anno 2009, il Ministro Giulio Tremonti.
Elaborazione statistica di dati
Problema dell’Ordinamento. Problema dell’ordinamento Formulazione del problema –Si vuole ordinare una lista di elementi secondo una data proprietà P Esempio:
Corso integrato di Matematica, Informatica e Statistica Informatica di base Linea 1 Daniela Besozzi Dipartimento di Informatica e Comunicazione Università.
DIPENDENZA STATISTICA TRA DUE CARATTERI Per una stessa collettività può essere interessante studiare più caratteri presenti contemporaneamente in ogni.
Criteri di divisibilità
La funzione CASUALE. Gli istogrammi.
ELEMENTI DI CALCOLO DELLE PROBABILITA’. Evento Aleatorio Un evento si dice aleatorio se può o non può verificarsi (Alea in greco vuol dire dado)
1 TEORIA DELLA PROBABILITÁ. 2 Cenni storici i primi approcci alla teoria della probabilità sono della metà del XVII secolo (Pascal, Fermat, Bernoulli)
Dipartimento di Economia, Management e Istituzioni APPPLICAZIONI AZIENDALI MEDIANTE FOGLIO ELETTRONICO 6° modulo: Analisi scostamenti, lotto economico.
1 ELEMENTI DI CALCOLO COMBINATORIO. 2 Elementi di calcolo combinatorio Si tratta di una serie di tecniche per determinare il numero di elementi di un.
Un evento è un fatto che può accadere o non accadere. Se esso avviene con certezza si dice evento certo, mentre se non può mai accadere si dice evento.
Transcript della presentazione:

Monte-Carlo per il Monopoli

Via Monte rosa Gran Sasso Staz. Sud Impr. Tassa Vicolo Stretto Prob Vesu vio Vicolo Corto Prig. Vit toria Raff. Verdi Staz. Ovest Prob. Ate- neo Soc. Elettrica Dante Acca- demia Univ Tassa Giardi ni Impr. Staz. Est Augu sto Prob Impero Roma Vai in prigione Traia- no Costan tino Staz. Nord Acq. Pot. Magel- lano Impr Giulio Cesare Marco Polo Colom bo Parche ggio DEI - Univ. Padova (Italia)

16 tra cui: vai in carcere vai al Via vai al Vicolo Corto Probabilità DEI - Univ. Padova (Italia)

16 tra cui: vai in Carcere vai al Via vai a Via Accademia Imprevisti 16 tra cui: vai in Carcere vai al Via vai a Via Accademia vai a Largo Colombo vai a Stazione Nord vai a Parco della Vittoria fai 3 passi indietro DEI - Univ. Padova (Italia)

Turno di gioco Ad ogni turno ogni giocatore lancia i dadi, e a seconda del numero ottenuto muove il segnalino di altrettanti spazi sulla tavola. A seconda della casella su cui il segnalino si ferma, al giocatore si presentano le possibilità di diventare il proprietario del lotto, pagare l’affitto o le tasse, pescare dal mazzo di probabilità o imprevisti, o finire in prigione. DEI - Univ. Padova (Italia)

Tirando tre volte di seguito un numero doppio andrà in prigione. Tiri doppi Quando un giocatore, gettando i dadi, fa con entrambi dadi lo stesso numero, procede col suo segnalino come di solito e sopporta le conseguenze buone o cattive inerenti al terreno su cui è arrivato, ma deve tirare una seconda volta e spostare di nuovo il segnalino in rapporto al numero fatto. Tirando tre volte di seguito un numero doppio andrà in prigione. DEI - Univ. Padova (Italia)

Utilizzando “uscite gratis di prigione” Pagamento Tirando dadi doppi Utilizzando “uscite gratis di prigione” Condonato al terzo turno in prigione DEI - Univ. Padova (Italia)

Un primo modello: assunzioni Consideriamo come unica casella “speciale” la 31: Vai in prigione Se si finisce sulla casella “Vai in prigione” con un tiro doppio non si tira immediatamente per uscire di prigione Si simula un solo giocatore Ci si disinteressa di come si esce dalla prigione DEI - Univ. Padova (Italia)

Modellare il tabellone Nel tabellone ci sono 40 caselle Alcune caselle speciali richiedono azioni particolari (ad es Vai in prigione) Rappresentiamo il tabellone con un vettore di 40 elementi, in cui memorizzeremo il numero di volte che un giocatore passa in ogni casella DEI - Univ. Padova (Italia)

Modellare il tabellone >> tabellone=zeros(1,40) La funzione zeros(M,N) crea una matrice MxN di zeri. In tal modo inizializzamo il vettore delle visite delle caselle a zero. Es: il numero di volte che si passe sulla casella 7 (Bastion Gran Sasso) è >> tabellone(6) che sarà inizialmente 0, mentre alla fine avrà un valore on nullo DEI - Univ. Padova (Italia)

Modellare il tabellone >> azioni=[1, 2, 3, 2, 4, … Per rappresentare le diverse tipologie di caselle creiamo un vettore 1x40 azioni che contiene il codice che rappresenta il tipo della casella corrispondente: 1: Via 2: Terreno 3: Tassa 4: Probabilità 5: Imprevisti 6: Vai in Prigione Es: Data la posizione 15 sul tabellone >> tabellone(15) dà il numero di volte che quella casella è stata visitata, mentre >> azioni(15) indica il tipo di casella. azioni(15) vale 2, che indica essere un terreno (Piazza Università) DEI - Univ. Padova (Italia)

Modellare il lancio di dadi Il lancio di un dado può essere modellato attraverso la funzione rand(). La funzione restituisce un valore (reale) pseudo-casuale estratto dall’intervallo [0,1] 1 DEI - Univ. Padova (Italia)

Modellare il lancio di dadi Per ottenere da un intervallo reale i valori interi che ci servono, dividiamo l’intervallo in regioni, ed ogni numero appartenente ad una determinata regione indicherà la regione Regione 1 Regione 3 Regione 5 1 Regione 4 Regione 2 Regione 6 DEI - Univ. Padova (Italia)

Modellare il lancio di dadi Se dividiamo l’intervallo in maniera equispaziata (tutte le regioni hanno la stessa dimensione), anche le probabilità di finire dentro ad una regione sono uguali 1 2 3 4 5 6 Regione corrispondente ad estrarre 1 Regione corrispondente ad estrarre 6 DEI - Univ. Padova (Italia)

Modellare il lancio di dadi >> dado= ceil(6*rand(1)); 1 2 3 4 5 6 Regione corrispondente ad estrarre 1 Regione corrispondente ad estrarre 6 DEI - Univ. Padova (Italia)

Modellare il lancio di dadi Dal momento che è necessario lanciare 2 dadi alla volta, estraiamo 2 valori, e li inseriamo in un vettore 1x2 lancio: >> lancio=ceil( 6 * rand(1,2) ); DEI - Univ. Padova (Italia)

Turno di lancio di un giocatore Ad ogni turno un giocatore tira due dadi, si sposta del numero indicato dai dadi, e poi, nel caso abbia fatto doppio, tira ancora fino ad un massimo di tre volte di fila. DEI - Univ. Padova (Italia)

Turno di lancio di un giocatore Creiamo una funzione che simuli questo turno di lancio, restituendo un vettore 1x4 con la somma dei due lanci per ogni tiro (eventuale). I valori nulli nel vettore indicano che non sono stati effettuati quei lanci Nel caso in cui ci siano valori non nulli in tutti gli elementi del vettore significa che si è tirato 3 volte doppio DEI - Univ. Padova (Italia)

Turno di lancio di un giocatore function passi=Turno() passi=zeros(1,4); nlanci=1; exit_cond=1; while(exit_cond) lancio=ceil(6*rand(1,2)); passi(nlanci)=sum(lancio); nlanci=nlanci+1; exit_cond=(diff(lancio)==0) & nlanci<=4; end; DEI - Univ. Padova (Italia)

Turno di lancio di un giocatore Si inizializza il vettore 1x4 passi a 0, e il numero di lanci nlanci a 1 Si impone la condizione di terminazione del ciclo while exit_cond a 1 in modo che almeno alla prima iterazione si esegua il ciclo Si calcola il lancio dei due dadi e si memorizza la somma dei dadi nella variabile passi, nella posizione corrispondete al numero del lancio effettuato Si incrementa il numero di lanci nlanci di 1 Si controlla di non aver superato il numero massimo di lanci e di non aver fatto doppio: se una delle due condizioni è verificata exit_cond diventa 0 ed il ciclo si interrompe DEI - Univ. Padova (Italia)

Movimento di un giocatore Una volta che si hanno i lanci effettuati da un giocatore, bisogna spostare la sua posizione, un lancio alla volta, aggiornando il numero di viste delle caselle in cui si ferma al termine di ogni movimento. Bisogna controllare anche: Se capita nella casella “Vai in prigione” il turno termina e la posizione del giocatore diventa la prigione (casella 10) Se ci sono tre lanci doppi (quattro valori non nulli nel vettore passi) il giocatore deve andare in prigione DEI - Univ. Padova (Italia)

Movimento di un giocatore (1) function [pos_out,tabellone]=Muovi(pos_in,passi,tabellone,azioni) nlanci=1; while(passi(nlanci)>0 & nlanci<=3) pos_fin=pos_in+passi(nlanci); pos_fin=mod(pos_fin-1,40)+1; if(pos_fin==31), pos_out=11; tabellone(pos_out)=tabellone(pos_out)+1; return; else tabellone(pos_fin)=tabellone(pos_fin)+1; end; pos_in=pos_fin; nlanci=nlanci+1; . . . . . . . DEI - Univ. Padova (Italia)

Movimento di un giocatore (1) Si inizializza il numero di lanci nlanci a 1, dal momento che sarà sempre presente almeno il primo valore nel vettore passi. Si controlla che ci sia un lancio valido (passi(nlanci)>0), e che non si sia superato il numero di lanci consentito. Si sposta il giocatore dalla posizione iniziale pos_in di tante caselle quanto è il lancio dei dadi passi(nlanci)e si fa in modo che se si supera l’ultima casella (caselle 40), si ritorni all’inizio Se la casella in cui il giocatore si è mosso pos_fin è la casella “Vai in prigione”, il movimento termina con la posizione finale pos_out in prigione (casella 11), ed il corrispondente valore del numero di visite di tabellone(11) incrementato 1. Altrimenti si incrementa il numero delle visite della posizione corrispondente tabellone(pos_fin), si aggiorna la posizione iniziale in modo che l’eventuale tiro ulteriore parta dall’ultima posizione, e si incrementa il numero di lanci DEI - Univ. Padova (Italia)

Movimento di un giocatore (2) Bisogna ancora controllare se però il giocatore dopo gli eventuali primi due movimenti abbia fatto ancora doppio. Nel qual caso bisogna imporre come casella d’arrivo del turno la prigione, e togliere l’incremento dell’ultima casella visitata (corrispondente al movimento effettuato con il terzo lancio doppio) DEI - Univ. Padova (Italia)

Movimento di un giocatore (2) function [pos_out,tabellone]=Muovi(pos_in,passi,tabellone,azioni) nlanci=1; while(passi(nlanci)>0 & nlanci<=3) pos_fin=pos_in+passi(nlanci); pos_fin=mod(pos_fin-1,40)+1; if(pos_fin==31), pos_out=11; tabellone(pos_out)=tabellone(pos_out)+1; return; else tabellone(pos_fin)=tabellone(pos_fin)+1; end; pos_in=pos_fin; nlanci=nlanci+1; if(all(passi)>0) pos_out=pos_fin; DEI - Univ. Padova (Italia)

Simulare qualche turno Dopo aver scritto le funzioni che gestiscono il lancio dei dadi ed il movimento, possiamo simulare qualche turno di un giocatore DEI - Univ. Padova (Italia)

Simulare qualche turno tabellone=zeros(1,40); azioni=zeros(1,40); azioni=[1,2,3,2,4,2,2,5,2,2,… 0,2,2,2,2,2,2,3,2,2,… 0,2,5,2,2,2,2,2,2,2,… 6,2,2,3,2,2,5,2,4,2]; Nturni=1000; pos_in=1; for ct=1:Nturni, passi=Turno(); [pos_fin,tabellone]=Muovi(pos_in,passi,tabellone,azioni); pos_in=pos_fin; end; DEI - Univ. Padova (Italia)

Simulare qualche turno Qui si vogliono simulare Nturni di un giocatore, per vedere quante volte ogni casella è visitata nel corso di questi turni Si imposta un cicle for, ad ogni iterazione un giocatore tira i dadi e si muove, ed il numero di visite delle caselle in tabellone viene aggiornato DEI - Univ. Padova (Italia)

Risultati Prigione Probabilità Viale Costantino Staz. Ovest Corso Magellano Vai in Prigione DEI - Univ. Padova (Italia)