Come simulare modelli probabilistici

Un giorno mi sono imbattuto in una domanda del genere:
Tizio lancia una moneta 6 volte, Caio 7; qual è la probabilità che Caio abbia ottenuto più teste di Tizio?
Ecco come mi venne l'idea di simulare il modello con il computer. Lo trovate, con la possibilità di alcune varianti, in chi ne fa di più.

Da un evento singolo...

Immaginiamo che un bambino un po' idiota voglia scoprire qual è la probabilità che, lanciando un dado, esca un nomero pari. Se è idiota come avevo premesso, non gli resterà altra scelta che lanciarlo un migliaio di volte, annotando volta per volta la riuscita o meno dell'evento nomero pari. Dopo questa dispendiosa operazione, il risultato ottenuto sarà molto vicino alla probabilità reale del fenomeno nomero pari. Ciò significa che l'evento si verificherà in circa 500 casi su 1000, il che farà pensare ad un 50% di probabilità

... al modello ...

Ora, vuolsi calcolare la possibilità di un evento complesso. Ad esempio, sapete dirmi qual è la possibilità che lanciando il dado 10 volte, si ottenga più volte il numero 1 che lanciandolo 20 volte? Sicuramente meno del 50%, ma i calcoli presentano numerose difficoltà nelle quali non ho voglia di addentrarmi.
Possiamo fare come il bambino di prima, cioè lanciamo il dado per 10 volte e annotiamo il numero delle volte che è uscito 1, poi lo lanciamo 20 volte e verifichiamo se si sono ottenuti più 1 la prima o la seconda volta. Dopodiché, per avere una stima precisa, ripetiamo l'operazione per qualche centinaia di volte.

... all'informatica

Fortunatamente stavo solo scherzando, perché il computer può farlo per noi.
In tutti i linguaggi di programmazione, esiste un metodo random (a proposito, qualcuno sa cosa avviene a livello elettronico con questo metodo? se sì per favore ditemelo a f.tabacchi@tiscali.it) che restituisce un numero decimale casuale tra 0 e 1 (prova il pulsante sotto).

Ci accorgiamo anche che c'è un 1/x di possibilità che il metodo random restituisca un numero inferiore a 1/x. Con questa consapevolezza una basilare conoscenza di un linguaggio di programmazione vi permetterà di generare una combinazione di eventi da reiterare alcune centinaia di migliaia di volte (ma non troppe altrimenti dovrete aspettare un bel po').

Non ho mai trovato un utilizzo in tal senso dei linguaggi di programmazione, il che mi ha stupito per la scarsità del tempo necessario a realizzare programmi come quelli che vi propongo e per la loro versatilità (tutte le variabili possono essere inserite dall'utente con una comoda interfaccia). Mi viene da pensare al loro possibile utilizzo nei contesti decisionali aziendali (teoria dei giochi), o laddove si voglia calcolare la vincita media in un gioco d'azzardo abbastanza complesso.

Gli esempi ai quali potete accedere tramite il menù qui a fianco sono realizzati in Javascript, quindi potrete sperimentarli direttamente dai links. La simulazione Vincita esponenziale è quella più strana, se riuscite a dimostrare che la vincita media tende a infinito fatemelo sapere.

Per finire, nulla impedisce di utilizzare metodi random per scopi non prettamente numerici, ma diciamo... fisici come in movimento di particelle neutre.








coefficenti binomiali

chi ne fa di più?

vincita esponenziale

movimento casuale di particelle

cariche elettriche in un conduttore (consigliato Explorer)

Offro consulenza per chiunque abbia bisogno di modelli probabilistici per giudicare la necessità o meno di operazioni commerciali o scommesse, o per stabilire il costo medio di servizi legati a eventi aleatori.

Per info,
scrivetemi