Simulering med parade tärningar
Liknande exemplet i lektionen slår du två tärningar från två påsar, där varje påse innehåller tre viktade tärningar.
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]]
Skillnaden är att tärningarna i de två påsarna är parade: om du väljer den andra tärningen i bag1 väljer du även den andra tärningen i bag2. I varje försök:
- Väljer du slumpmässigt ett par tärningar från de två påsarna och slår dem
- Lyckat utfall inträffar om poängen på
dice1ochdice2summerar till åtta, annars misslyckat
Din uppgift är att färdigställa for-slingan i funktionen roll_paired_biased_dice() och använda den för att beräkna sannolikheten för lyckat utfall för varje unik kombination av poäng på dice1 och dice2.
Följande har importerats åt dig: random, numpy som np, pandas som pd, seaborn som sns och matplotlib.pyplot som plt.
Den här övningen är en del av kursen
Monte Carlo-simuleringar i Python
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
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}))