Моделювання пари гральних кісток
Подібно до прикладу в уроці, ви кидатимете дві кістки з двох мішків, і в кожному мішку є три зміщені (упереджені) кістки.
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]]
Відмінність у тому, що кістки в двох мішках утворюють пари: якщо ви берете другу кістку з bag1, то берете й другу кістку з bag2. У кожному прогоні:
- Ви випадково обираєте одну пару кісток із двох мішків і кидаєте їх
- Успіх відбувається, якщо значення на
dice1іdice2у сумі дають вісім; інакше — невдача
Ваше завдання — доповнити цикл for у функції roll_paired_biased_dice() і використати цю функцію, щоб обчислити ймовірності успіху для кожної унікальної комбінації значень на dice1 і dice2.
Для вас уже імпортовано: random, numpy як np, pandas як pd, seaborn як sns та matplotlib.pyplot як plt.
Ця вправа є частиною курсу
Моделювання Монте-Карло в Python
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
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}))