Scratch e statistica: una passeggiata aleatoria

Una semplice implementazione, con Scratch, del concetto di “random walk”.

Facciamo inizialmente passeggiarre il gatto da una parte all’altra dello stage con lo script mostrato in Figura 1.

Figura 1

Uno script del genere non lascia spazio a molte modifiche; lo cambiamo quindi con quello di Figura 2, dove l’uso del blocco ripeti ci consente di inserire ulteriori espansioni.

Figura 2

Essendo lo stage largo 480 passi, se il gatto fa 10 passi alla volta, per percorrere tutto lo schermo da sinistra a destra, deve ripetere 48 volte l’esecuzione del blocco fai 10 passi (questo vale, ovviamente, se il gatto procede perfettamente in orizzontale).

Possiamo generalizzare questo script come mostrato in Figura 3.

Figura 3

Questo nuovo script funziona anche se al posto di 10 passi ne facciamo fare al gatto 5 oppure 12 oppure 20 ecc.

Funziona bene anche se facciamo muovere il gatto in diagonale (l’importante è che ci sia comunque un incremento del valore coordinata x).

Ora facciamo l’ipotesi che prima di fare i 10 passi il gatto lanci una monetina. Se esce testa (valore 0) il gatto prima di muoversi si gira verso alto-destra, se esce croce (valore 1) il gatto prima di muoversi si gira verso basso-destra.

Scratch non contiene alcun comando relativo a monetina da lanciare, ma ha un generatore di numeri pseudocasuali che può servire allo scopo (si trova nella categoria “Operatori”).

Possiamo combinare questo blocco con una struttura di controllo del tipo se… allora / altrimenti. Vediamo come inserire tutto ciò nello script precedente (Figura 4).

Figura 4

Il risultato non cambia, poiché il gatto fa 10 passi sia che esca testa (0) sia che esca croce (1).

Ma se inseriamo all’interno delle due “forchette” il blocco che cambia la direzione dello sprite (cioè lo fa “puntare” in diagonale), vediamo che il gatto sembra ora procedere a singhiozzo (Figura 5).

Figura 5

L’uso dei blocchi della categoria “Penna” consente di tracciare il movimento del gatto sullo schermo (Figura 6). Adesso la passeggiata “casuale” è più evidente.

Figura 6

Può essere interessante far ripetere più volte questa passeggiata, come mostrato in Figura 7, dove la passeggiata viene fatta ripetere infinite volte, cambiando colore al termine di ogni ripetizione.

Figura 7

Inoltre, con la l’uso delle variabili (ad esempio “testa” e “croce”) è possibile tener nota di quante volte è uscita testa e quante croce (Figura 8), anche per verificare se il generatore di numeri pseudocasuali funziona in maniera corretta oppure no.

Figura 8

Cosa possiamo cambiare? Ad esempio i valori nei blocchi punta in direzione… (che potremmo impostare rispettivamente a 60 e a 120, rendendo il grafico più “stretto”), oppure il numero di passi (provare con 5 o con 20, ad esempio).

La passeggiata aleatoria appena presentata è bidimensionale, ma potremmo avere anche una più semplice passeggiata monodimensionale (tipo quello di un treno su una rotaia che può andare solo avanti o indietro o potrebbe essere tridimensionale…

In Figura 9 un esempio di passeggiata aleatoria monodimensionale.

Figura 9

Questo tutorial è stato creato per il Festival della Statistica e della Demografia 2017 (dal 29 settembre al 1° ottobre a Treviso).

Per maggiori informazioni sulle passeggiate aleatorie: https://it.wikipedia.org/wiki/Passeggiata_aleatoria