Dadiplus Simulazione lancio dadi con Seeeduino Wio

Statistica Wio Seeed Studio

In questo articolo impareremo il concetto di modello matematico e simulazione, applicati ad un semplice programma per Seeeduino Wio Terminal e Arduino.

Immaginiamo di lanciare in aria una moneta nove volte, e di ottenere per nove volte di seguito “testa”. Qual è la probabilità che al decimo lancio esca “croce”?

Se avete risposto “il 90%”, allora andate pure avanti con la lettura, un piccolo ripasso di statistica sarà certamente il benvenuto.

Se invece siete tra quegli eletti che rispondono (correttamente) “il 50%”, allora già conoscete la differenza tra eventi dipendenti ed indipendenti. Come si è soliti ripetere in ambito statistico, una moneta non ha memoria del proprio passato, e ad ogni lancio le probabilità che esca testa sono pari alle probabilità che esca croce. Anche se la serie precedente ha visto l’uscita di 99 “croce” di seguito, ogni volta che gettiamo in aria la moneta, i numeri legati alle probabilità si resettano, e si riparte da zero.

E’ evidente che un simile comportamento appaia quantomeno controintuitivo a chi, come l’essere umano medio, sia abituato a ricercare pattern in ogni sua percezione sensoriale. Ci troviamo di fronte alla solita, antichissima storia che ci vede attori nella ricerca di un miglioramento del nostro stato attraverso il tentativo di riconoscere le cause prime dietro ad ogni manifestazione della Realtà.

Dalle monete ai dadi

Se abbiamo esattamente il 50% delle probabilità di vedere cadere una moneta su testa o su croce (trascurando quelle rare eccezioni in cui la moneta rimane in piedi sul bordo), quante sono invece le probabilità di uscita per ciascuna faccia di un dado? Semplice: ad ogni tiro ciascuna faccia ha esattamente una possibilità su sei di apparire. Quindi, circa il 16,67%.

In altri termini, ciascun valore da 1 a 6 ha esattamente le stesse probabilità di uscita (a meno di avere dadi piombati…).

Le cose diventano più interessanti quando aumentiamo il numero dei dadi da lanciare: in nessun modo, infatti sarà possibile ottenere il valore 1 con due dadi (ovviamente…). Nella tabella seguente vediamo in quanti modi diversi potremo ottenere ciascun valore come risultato.

UscitaNumero possibilitàCombinazioni possibiliProbabilità di uscita
211+11/36 --> 2,78%
321+2, 2+12/36 --> 5,55%
431+3, 2+2, 3+13/36 --> 8.33%
541+4, 2+3, 3+2, 4+14/36 --> 11,11%
651+5, 2+4, 3+3,4+2, 5+15/36 --> 13,89%
761+6, 2+5, 3+4, 4+3, 5+2, 6+16/36 --> 1/6 --> 16,67%
852+6, 3+5, 4+4, 5+3, 6+25/36 --> 13,89%
943+6, 4+5, 5+4, 6+34/36 --> 11,11%
1034+6, 5+5, 6+43/36 --> 8.33%
1121+5, 5+12/36 --> 5,55%
1216+61/36 --> 2,78%

Con un po’ di matematica combinatoria (ma anche solo buonsenso) è facile riconoscere che le possibilità di uscita per ciascun numero non sono più le stesse, in quanto alcuni valori possono essere combinati in più modi differenti. Se osserviamo la tabella, ci rendiamo conto di avere ad ogni lancio 36 possibili combinazioni differenti. Il valore 2 ed il valore 12 avranno ciascuno 1 probabilità su 36 di uscire ad ogni lancio, il valore 3 ed il valore 11 avranno 2 probabilità ciascuno di uscire ad ogni lancio, e così via. In altri termini, la probabilità di uscita di ciascun numero non è più la stessa rispetto al dado singolo, e in particolare, la probabilità di uscita di un 2 o di un 12 con due dadi risulta pari all’uscita di un numero secco alla roulette (1/36 o 2,78%, se per il momento non consideriamo lo zero).

Aumentiamo la complessità.

Cosa accade se anziché due soli dadi ne utilizzassimo di più? Quali sarebbero le probabilità per ciascuna uscita? Conserverebbero l’apparente linearità di crescita o creerebbero curve più strane? Potremmo calcolare i valori a mano, ma rischieremmo di sbagliare al crescere dei calcoli da effettuare. Un computer, invece, sarebbe perfettamente a proprio agio…

Abbiamo per l’appunto una piccola scheda dotata di capacità di calcolo particolari, il Seeeduino Wio Terminal. Si tratta di un Arduino su steroidi, dotato di un sistema SAMD51 con processore ARM Cortex M4. Abbiamo già visto questo sistema al lavoro nel calcolo dei frattali di Lyapunov. Si tratta solo di scrivere un semplice programma che si occupi di simulare il lancio di 6 dadi  utilizzando la funzione random(), accumulare i valori di uscita per ciascuna combinazione e calcolarne la percentuale rispetto al totale delle uscite.

Simulazione Wio Terminal

Per rendere il programma più simpatico da visualizzare, aggiungeremo la visualizzazione del numero delle uscite per ciascuna combinazione su di una tabella.

Al termine del programma, basterà cliccare sul tasto azzurro per avere una tabulazione dei valori probabilistici calcolati per ciascuna combinazione.

Simulazione Wio Seeed Studio

Di seguito il programma relativo.

 

Come sempre, il programma è disponibile anche su GitHub.

Se vi interessa approfondire l’argomento simulazioni al computer, scriveteci!

Link utili:

 

Definire ciò che si è non risulta mai semplice o intuitivo, in specie quando nella vita si cerca costantemente di migliorarsi, di crescere tanto professionalmente quanto emotivamente. Lavoro per contribuire al mutamento dei settori cardine della computer science e per offrire sintesi ragionate e consulenza ad aziende e pubblicazioni ICT, ma anche perche’ ciò che riesco a portare a termine mi dà soddisfazione, piacere. Così come mi piace suonare (sax, tastiere, chitarra), cantare, scrivere (ho pubblicato 350 articoli scientfici e 3 libri sinora, ma non ho concluso ciò che ho da dire), leggere, Adoro la matematica, la logica, la filosofia, la scienza e la tecnologia, ed inseguo quel concetto di homo novus rinascimentale, cercando di completare quelle sezioni della mia vita che ancora appaiono poco ricche.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.