Una moneta da 2 euro…

Esame di Stato 2009 PNI – Quesito 3

Una moneta da 2 euro (il suo diametro è di 25,75 mm) viene lanciata su un pavimento ricoperto con mattonelle quadrate di lato 10 cm.
Qual è la probabilità che la moneta vada a finire internamente a una mattonella (cioè non tagli i lati dei quadrati)?


Vedi la discussione (Moneta di Buffon).

La probabilità teorica è \displaystyle p = \displaystyle \frac{S_i}{S} = \displaystyle \frac{(L-D)^2}{L^2} = … = 0.5513… (55 %)

import random

N =5000  # numero lanci
L =10    # lato della piastrella
D =2.575 # diametro della moneta
L2=L/2   # metà del lato
R =D/2   # raggio della moneta

def controllo(x,y):
    if(abs(x) < L2-R) and (abs(y) < L2-R):
        return 1
    else:
        return 0

fa=0     # frequenza assoluta

for lanci in range(N):
    x   = random.uniform(-L2,+L2)
    y   = random.uniform(-L2,+L2)
    fa += controllo(x,y)

fr=fa/N  # frequenza relativa
print(fr)

matplotlib

import matplotlib.pyplot as plt
import random

N =5000  # numero lanci
L =10    # lato della piastrella
D =2.575 # diametro della moneta
L2=L/2   # metà del lato
R =D/2   # raggio della moneta

def controllo(x,y):
    if(abs(x) < L2-R) and (abs(y) < L2-R):
        return 1
    else:
        return 0

fa=0     # frequenza assoluta

xp=[]
yp=[]
xP=[]
yP=[]

for lanci in range(N):
    x=random.uniform(-L2,+L2)
    y=random.uniform(-L2,+L2)
    if controllo(x,y):
        fa += 1
        xp.append(x) # dentro
        yp.append(y)
    else:
        xP.append(x) # sul bordo
        yP.append(y)

fr=fa/N # frequenza relativa
print(fr)

plt.axis("equal")
plt.grid(which="major")
plt.scatter(xp, yp, color="green", marker ="." ) # dentro
plt.scatter(xP, yP, color="red"  , marker ="." ) # sul bordo
plt.title("Moneta da 2 euro")

plt.show()