Simulazione con dadi accoppiati
Come nell'esempio della lezione, lancerai due dadi presi da due sacche; ogni sacca contiene tre dadi truccati.
bag1 = [[1, 2, 3, 6, 6, 6], [1, 2, 3, 4, 4, 6], [1, 2, 3, 3, 3, 5]]
bag2 = [[2, 2, 3, 4, 5, 6], [3, 3, 3, 4, 4, 5], [1, 1, 2, 4, 5, 5]]
La differenza è che i dadi nelle due sacche sono accoppiati: se scegli il secondo dado in bag1, sceglierai anche il secondo dado in bag2. In ogni prova:
- Selezioni casualmente una coppia di dadi dalle due sacche e li lanci
- Si ha successo se i punti su
dice1edice2sommano a otto; altrimenti, è un fallimento
Il tuo compito è completare il ciclo for nella funzione roll_paired_biased_dice() e usare questa funzione per calcolare le probabilità di successo per ogni combinazione unica di punti su dice1 e dice2.
Sono già stati importati per te: random, numpy come np, pandas come pd, seaborn come sns e matplotlib.pyplot come plt.
Questo esercizio fa parte del corso
Simulazioni Monte Carlo in Python
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
def roll_paired_biased_dice(n, seed=1231):
random.seed(seed)
results={}
for i in range(n):
bag_index = random.randint(0, 1)
# Obtain the dice indices
dice_index1 = ____
dice_index2 = ____
# Sample a pair of dice from bag1 and bag2
point1 = ____
point2 = ____
key = "%s_%s" % (point1,point2)
if point1 + point2 == 8:
if key not in results:
results[key] = 1
else:
results[key] += 1
return(pd.DataFrame.from_dict({'dice1_dice2':results.keys(),
'probability_of_success':np.array(list(results.values()))*100.0/n}))