Aan de slagGa gratis aan de slag

Simulatie met gekoppelde dobbelstenen

Net als in het voorbeeld in de les gooi je met twee dobbelstenen uit twee zakken, en elke zak bevat drie bevooroordeelde dobbelstenen.

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]]

Het verschil is dat de dobbelstenen in de twee zakken gekoppeld zijn: als je de tweede dobbelsteen in bag1 kiest, kies je ook de tweede dobbelsteen in bag2. In elke proef:

  • Je kiest willekeurig één paar dobbelstenen uit de twee zakken en gooit ermee
  • Succes treedt op als de ogen op dice1 en dice2 optellen tot acht; anders is het een mislukking

Jouw taak is om de for-lus in de functie roll_paired_biased_dice() af te maken en deze functie te gebruiken om de kansen op succes te berekenen voor elke unieke combinatie van ogen op dice1 en dice2.

Het volgende is al voor je geïmporteerd: random, numpy als np, pandas als pd, seaborn als sns en matplotlib.pyplot als plt.

Deze oefening maakt deel uit van de cursus

Monte Carlo-simulaties in Python

Cursus bekijken

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

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}))
Code bewerken en uitvoeren