Почему я получаю разные результаты от двух функций в симуляторе броска костей в python? - PullRequest
0 голосов
/ 08 мая 2020

Я написал две функции в Jupyter Notebook для имитации катания игральных костей:

  1. Один набор из x кубиков с d гранями n раз.
  2. Два набора кубиков с разными Значения x и d, n раз.

Смоделированные броски игральных костей затем наносятся на гистограмму. Первая функция работает нормально, а вторая работает не так, как я ожидал. Например, если я имитирую бросание четырех шестигранных кубиков 1000 раз с помощью моей первой функции, я получаю совсем другие результаты по сравнению с броском двух наборов шестиугольных кубиков 1000 раз с помощью второй функции. Мой код ниже:

функция для броска одного кубика:

def roll_dice(x, d):
    """
    Function to simulate rolling x fair dice with d number of faces
    """
    roll = 0
    for i in range(x):
        roll += np.random.randint(1, d + 1)
    return roll

Первая функция для имитации броска одного набора кубиков n раз:

def simulate_dice_rolls(n, x, d):
    """This function simulates n dice rolls, for x number of dice, with d number of faces."""
    results = []
    for i in range(n):
        results.append(roll_dice(x, d))
    results = np.asarray(results)
    return results

Вторая функция для имитировать бросание двух наборов игральных костей:

def simulate_two_sets_dice_rolls(n, x1, d1, x2, d2):
    """This simulates rolling two different sets of dice (with xi number of dice with di number of faces) n times"""
    results_2 = []
    for i in range(n):
        results_2.append(roll_dice(x1, d1))
        results_2.append(roll_dice(x2, d2))

    results_2 = np.asarray(results_2)
    return results_2

Это полученные гистограммы:
Гистограмма 1 - один набор бросков костей
Гистограмма 2 - два набора бросков костей

Почему эти функции дают разные результаты, когда они обе вызывают одну и ту же функцию roll_dice и добавляют результаты в список?
Мой блокнот можно просмотреть на Github здесь

...