LoslegenKostenlos loslegen

Simulation mit gepaarten Würfeln

Ähnlich wie im Beispiel in der Lektion würfelst du mit zwei Würfeln aus zwei Beuteln, und jeder Beutel enthält drei gezinkte Würfel.

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

Der Unterschied ist, dass die Würfel in den beiden Beuteln gepaart sind: Wenn du den zweiten Würfel in bag1 auswählst, nimmst du auch den zweiten Würfel in bag2. In jedem Durchlauf gilt:

  • Du wählst zufällig ein Würfelpaar aus den beiden Beuteln und würfelst
  • Erfolg liegt vor, wenn die Augen auf dice1 und dice2 zusammen acht ergeben; sonst Misserfolg

Deine Aufgabe ist es, die for-Schleife in der Funktion roll_paired_biased_dice() zu vervollständigen und diese Funktion zu verwenden, um die Erfolgswahrscheinlichkeiten für jede eindeutige Kombination der Augen auf dice1 und dice2 zu berechnen.

Folgendes wurde für dich importiert: random, numpy als np, pandas als pd, seaborn als sns und matplotlib.pyplot als plt.

Diese Übung ist Teil des Kurses

Monte-Carlo-Simulationen in Python

Kurs anzeigen

Interaktive Übung

Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.

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 bearbeiten und ausführen