Simularea zarurilor pereche
Asemănător exemplului din lecție, vei arunca două zaruri din două pungi, fiecare pungă conținând trei zaruri trucate.
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]]
Diferența constă în faptul că zarurile din cele două pungi sunt asociate în perechi: dacă alegi al doilea zar din bag1, vei alege și al doilea zar din bag2. În fiecare trial:
- Alegi aleatoriu o pereche de zaruri din cele două pungi și le arunci
- Succesul apare dacă suma punctelor de pe
dice1șidice2este opt; altfel, eșec
Sarcina ta este să completezi bucla for din funcția roll_paired_biased_dice() și să folosești această funcție pentru a calcula probabilitățile de succes pentru fiecare combinație unică de puncte de pe dice1 și dice2.
Au fost importate deja pentru tine: random, numpy ca np, pandas ca pd, seaborn ca sns și matplotlib.pyplot ca plt.
Acest exercițiu face parte din cursul
Simulări Monte Carlo în Python
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
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}))