Una scatola contiene 16 palline…

Esame di Stato 2019 – Simulazione 28/2 – Quesito 3


Una scatola contiene 16 palline numerate da 1 a 16.

  1. Se ne estraggono 3, una alla volta, rimettendo ogni volta nella scatola la pallina estratta.
    Qual è la probabilità che il primo numero estratto sia 10 e gli altri due minori di 10?
  2. Se ne estraggono 5 contemporaneamente.
    Qual è la probabilità che il più grande dei numeri estratti sia uguale a 13?

Vedi la discussione


Una scatola contiene 16 palline numerate da 1 a 16.
Se ne estraggono 3, una alla volta, rimettendo ogni volta nella scatola la pallina estratta.
Qual è la probabilità che il primo numero estratto sia 10 e gli altri due minori di 10?

import random # choice()

SCATOLA=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]

ESTRAZIONI=10000
freqAssoluta=0
for i in range(ESTRAZIONI):
    p1=random.choice(SCATOLA)
    p2=random.choice(SCATOLA)
    p3=random.choice(SCATOLA)
    if(p1 == 10) and (p2 < 10) and (p3 < 10):
        freqAssoluta += 1

freqRelativa=freqAssoluta/ESTRAZIONI
percentuale =100*freqRelativa

print("Frequenza assoluta =", freqAssoluta   )
print("Frequenza relativa =", freqRelativa   )
print("Percentuale        =", percentuale,"%")

Si può ottimizzare la fase di estrazione e controllo

import random 

SCATOLA=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16] 

def controllo(): 
    p=random.choice(SCATOLA); if(p != 10): return 0 
    p=random.choice(SCATOLA); if(p >= 10): return 0 
    p=random.choice(SCATOLA); if(p >= 10): return 0 
    return 1 

ESTRAZIONI=10000 
freqAssoluta=0 
for i in range(ESTRAZIONI): 
    freqAssoluta += controllo()   

freqRelativa=freqAssoluta/ESTRAZIONI 
percentuale =100*freqRelativa 

print("Frequenza assoluta =", freqAssoluta   ) 
print("Frequenza relativa =", freqRelativa   ) 
print("Percentuale        =", percentuale,"%")

Una scatola contiene 16 palline numerate da 1 a 16.
Se ne estraggono 5 contemporaneamente.
Qual è la probabilità che il più grande dei numeri estratti sia uguale a 13?

import random

SCATOLA=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]

ESTRAZIONI=1000
freqAssoluta=0
for i in range(ESTRAZIONI):
     random.shuffle(SCATOLA)
     p1=SCATOLA[0]
     p2=SCATOLA[1]
     p3=SCATOLA[2]
     p4=SCATOLA[3]
     p5=SCATOLA[4]
     if(p1 <= 13) and (p2 <= 13) and (p3 <= 13) and (p4 <= 13) and (p5 <= 13):
         if(p1 == 13) or (p2 == 13) or (p3 == 13) or (p4 == 13) or (p5 == 13):        
             freqAssoluta+=1

freqRelativa=freqAssoluta/ESTRAZIONI 
percentuale =100*freqRelativa 

print("Frequenza assoluta =", freqAssoluta ) 
print("Frequenza relativa =", freqRelativa ) 
print("Percentuale        =", percentuale,"%")

Ottimizzare?

...
freqAssoluta=0
for i in range(ESTRAZIONI):
    random.shuffle(SCATOLA)
    c13=False # controllo se uguale a 13
    c14=False # controllo se maggiore o uguale a 14
    for i in range(5): 
        p=SCATOLA[i]
        if(p == 13):
            c13=True
        elif(p > 13):
            c14=True
    if(c13 == True) and (c14 == False):    
        freqAssoluta += 1
...

ancora…

...
def controllo():
    risp=0
    for i in range(5):
        p=SCATOLA[i]
        if(p == 13):  
            risp=1
        elif(p > 13): 
            return 0
    return risp

freqAssoluta=0
for i in range(ESTRAZIONI):
    random.shuffle(SCATOLA)  
    freqAssoluta += controllo()
...