【发布时间】:2021-04-22 16:56:09
【问题描述】:
所以我正在学习如何处理概率以及如何在 Python 中绘制它们。我遇到了一个问题,我需要找到 2 个骰子之和大于 7 或奇数的概率。我知道结果大约是 75%,但它正在将其转换为我遇到问题的 Python。我解决问题的代码是这样的:
import random
import numpy as np
dice = [1,2,3,4,5,6]
value = 0
simulation_number = len(dice)**2
percentage = []
for i in range(0,simulation_number):
dice1 = random.choice(dice)
dice2 = random.choice(dice)
random_match = dice1,dice2
if (sum(random_match))>7 or (sum(random_match)%2) != 0:
value += 1
percentage.append(np.round((value/simulation_number)*100,2))
print(percentage,"%")
它工作得很好,但每次我运行代码时,它都会给出不同的解决方案,因为循环会重复 random_match 的结果。如何在代码中包含不重复 random_match 值的条件?
【问题讨论】:
-
对 random_match 重复结果是什么意思?不同是因为你没有播种吗? (即 np.random.seed)
-
只需在 def 中运行您的代码并调用之前的随机匹配项
-
代码对我来说似乎没问题...由于采样错误,您每次都会得到不同的解决方案...尝试将模拟数提高到一百万或更多,您应该会更接近 75%
-
如果循环的每次迭代都应该代表一个单独的掷骰子,那么必须允许重复,因为这是一种自然的可能性。
标签: python numpy random probability dice