掷 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 一个,因为循环往往花费的时间越长,数字越大——而且,为了满足我对这个主题的好奇心。谢谢^^

jjyyqa 回答:掷 100 次六面骰子与掷一次 100 面骰子返回的值相同吗? [Python]

因为对于数学一,最大的机会 (num = 100,side = 6) 是 1/600 而对于循环一,它是 (1/6) **100(大约 1.5306467e-78,其中低很多倍,如果我错了,请纠正我)。

为了缩短时间(我假设您正在改进循环一),您可以使用列表理解(sum([random.randint(1,side) for i in range(num)])

本文链接:https://www.f2er.com/2919.html

大家都在问