掷六面骰子 100 次 return 与掷一次 100 面骰子的价值相同吗? [Python]
Is rolling a six sided dice 100 times return the same value as rolling a 100 sided die once? [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)])
)
所以我在 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)])
)