【发布时间】:2020-03-19 15:30:15
【问题描述】:
我正在做这个任务:
你在掷
N骰子。用 Python 编写一个程序,计算总和大于3N/2且小于9N/2的概率。
我以为我只有 3 个骰子,因为用 N 骰子制作有点复杂,我尝试了一些方法,但我不明白如何找到 9N/2 > sum > 3N/2 的概率
import random
num_throws = 20 # NT
roll_log = [0] * 12 # Generate list for dice roll tallies
for i in range(num_throws):
# Random integer between 1 and 6 inclusive for each dice
dice_1 = random.randint(1, 6)
dice_2 = random.randint(1, 6)
dice_3 = random.randint(1, 6)
# Sum the random dice and increment the tally for that particular roll total
roll_sum = dice_1 + dice_2
roll_log[roll_sum-1] += 1 # minus 1 because Python is 0-indexed
for i, tally in enumerate(roll_log):
roll_prob = float(tally) / num_throws # Experimental probability of roll
roll = i + 1 # Since Python lists are 0-indexed
print('{}: {}/{} = {}'.format(roll, tally, num_throws, roll_prob))
n = 5
m = 10
rolls_between = roll_log[n:m-1]
sum_rolls_between = sum(rolls_between)
prob_between = float(sum_rolls_between) / num_throws
【问题讨论】:
-
统计计算与伪随机方法的结合难道不是糟糕的家庭作业的组成部分吗..? ;)
-
@iLuvLogix 是的,但我能做什么?
-
赋值语句已经很混乱了:'Python中的概率是多少'应该是:'用Python写一个程序来计算..根据...'
-
@iLuvLogix 老师的错,我现在已经编辑了问题。
-
通过使用“仅 3 个骰子”,您使问题变得比它需要的更复杂。程序应该很简单: (1) 用 0 初始化 sum; (2)N次,从1到6中选择一个随机数,加到总和中; (3) 将总和与 3N/2 和 9N/2 进行比较; (4) 多次重复步骤1-3,计算总和大于3N/2小于9N/2的频率
标签: python montecarlo