如何解决如何防止循环重复我的随机值?
所以我正在学习如何处理概率以及如何在 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.sample
:
import random
dice = [1,2,3,4,5,6]
dice1,dice2 = random.sample(dice,2)
,
生成从 1 到 6 的随机值将不起作用。假设您要抛硬币 10 次。理论上你应该得到 5 个正面和 5 个反面。但由于抽样误差,这在现实生活中不会发生。生成随机值时,总会有一些抽样误差。
import random
import numpy as np
dice = [1,6]
value = 0
simulation_number = len(dice)**2
for i in range(len(dice)):
for j in range(len(dice)):
dice1 = dice[i]
dice2 = dice[j]
x = dice1+dice2
if x>7 or x%2== 1:
value += 1
percentage = np.round((value/simulation_number)*100,2)
print(f'{percentage} %')
这是有效的,因为您只需要每个案例一次。使用 random 可能会一次又一次地出现相同的情况
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。