如何解决掷 100 次六面骰子与掷一次 100 面骰子返回的值相同吗? [Python]
所以我在 python 中创建了一个函数,根据用户输入模拟掷骰子。我有 2 个版本的代码,一个使用循环,一个使用纯数学(我不确定是否正确)。
# Loop
def simulate_dice_loop(num,sides):
result = 0
while num > 0:
x = random.randint(1,sides)
result += x
num -= 1
return result
# Math
def simulate_dice_math(num,sides):
max = num * sides
result = random.randint(1,max)
return result
我非常怀疑数学是否正确,尤其是在较大的数字上。 loop dice roll
往往保持在最大值的一半左右。然而,math
往往会一直波动,有时甚至会达到最大值的 90%——这在正常情况下可能不太可能。
...请帮助我如何改进 math
一个,因为循环往往花费的时间越长,数字越大——而且,为了满足我对这个主题的好奇心。谢谢^^
解决方法
因为对于数学一,最大的机会 (num = 100,side = 6) 是 1/600 而对于循环一,它是 (1/6) **100(大约 1.5306467e-78,其中低很多倍,如果我错了,请纠正我)。
为了缩短时间(我假设您正在改进循环一),您可以使用列表理解(sum([random.randint(1,side) for i in range(num)])
)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。