Si scelga a caso un punto…

Esame di Stato 2007 Suppletiva – Quesito 6

Si scelga a caso un punto P all’interno di un cerchio.
Si determini la probabilità che esso sia più vicino al centro che alla circonferenza del cerchio.


Vedi la discussione

Calcolo probabilistico (metodo Monte Carlo)

1

Per semplificare: r=1

import random

QUADRATO=10000               # punti nel QUADRATO

CERCHIO=0                    # punti nel CERCHIO grande , r=1
cerchio=0                    # punti nel cerchio piccolo, r=1/2
for i in range(QUADRATO): 
    x=random.uniform(-1,+1)
    y=random.uniform(-1,+1) 
    d2=x**2+y**2             # distanza**2
    if(d2 <= 1):             # nel CERCHIO grande : d2 <= 1
        CERCHIO+=1
        if(d2 <= 0.25):      # nel cerchio piccolo: d2 <= 1/4
            cerchio+=1 

f=cerchio/CERCHIO

print("QUADRATO  =", QUADRATO)
print("CERCHIO   =", CERCHIO)
print("cerchio   =", cerchio)
print("Frequenza =", f)

2

Per semplificare: punti nel 1° quadrante

import random

QUADRATO=10000               # punti nel QUADRATO

CERCHIO=0                    # punti nel CERCHIO grande , r=1
cerchio=0                    # punti nel cerchio piccolo, r=1/2
for i in range(QUADRATO): 
    x=random.random()
    y=random.random() 
    d2=x**2+y**2             # distanza**2
    if(d2 <= 1):             # nel CERCHIO grande : d2 <= 1
        CERCHIO+=1
        if(d2 <= 0.25):      # nel cerchio piccolo: d2 <= 1/4
            cerchio+=1 

f=cerchio/CERCHIO

print("QUADRATO  =", QUADRATO)
print("CERCHIO   =", CERCHIO)
print("cerchio   =", cerchio)
print("Frequenza =", f)

matplotlib

import matplotlib.pyplot as plt
import random

QUADRATO=10000

CERCHIO=0
cerchio=0

xQ=[] # punti nel QUADRATO
yQ=[]
xC=[] # punti nel CERCHIO grande
yC=[]
xc=[] # punti nel cerchio piccolo
yc=[]

for i in range(QUADRATO):
    x=random.uniform(-1,+1)
    y=random.uniform(-1,+1)
    xQ.append(x)
    yQ.append(y) 
    r=x**2+y**2
    if(r <= 1):
        CERCHIO+=1
        xC.append(x)
        yC.append(y) 
        if(r <= 0.25):
            cerchio+=1
            xc.append(x)
            yc.append(y)

f=cerchio/CERCHIO

print("QUADRATO  =", QUADRATO)
print("CERCHIO   =", CERCHIO )
print("cerchio   =", cerchio )
print("Frequenza =", f       )

plt.axis("equal") 
plt.scatter(xQ, yQ, color="gray" , marker =".") 
plt.scatter(xC, yC, color="green", marker =".") 
plt.scatter(xc, yc, color="red"  , marker =".") 
plt.title("Quesito: 2007 - 6")

plt.show()