Я написал две функции в Jupyter Notebook для имитации катания игральных костей:
- Один набор из x кубиков с d гранями n раз.
- Два набора кубиков с разными Значения 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 здесь