НачатьНачать бесплатно

Симуляция парных кубиков

По аналогии с примером из урока, вы будете бросать два кубика из двух мешков, каждый из которых содержит по три смещённых кубика.

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}))
Редактировать и запускать код