我想模拟你需要多长时间玩一次彩票才能中奖。这是我的代码:
import random
lotterylist = [random.randint(1, 49) for x in range(6)]
winning_numbers = [6, 26, 31, 32, 33, 49]
counter = 0
while winning_numbers != lotterylist:
lotterylist = [random.randint(1, 49) for x in range(6)]
counter += 1
print("Finished! I got", counter, "tries to win.")
我的电脑还没有结束。我运行了该程序 1.5 小时,它仍然运行。现在我的问题是:只有当生成的列表中的数字也位于完全相同的行时,它才有效吗?那么只有 6、26、31、32、33、49 有效,而不是 49、33、32、31、26、6? 如果是,我该如何解决?
我已经尽力了,但我的技术还不够好,无法成功。
“只有在生成的列表中的数字也位于完全相同的行时才有效吗?”
是的。
winning_numbers
和 lotterylistare
都是 list
数据类型,并且列表在 Python 中是有序的。
如果您不希望顺序重要,您可以使用
set
winning_numbers = {6, 26, 31, 32, 33, 49} # set type
winning_numbers = set(6, 26, 31, 32, 33, 49) # equivalent to the above
请注意,
set
不包含重复元素。这意味着您生成彩票号码的代码需要更新:
lotterylist = set()
while len(lotterylist) < 6:
lotterylist.add(random.randint(1, 49))
数字
[1, 49]
的 6 位数字序列的数量为 49^6 或 13841287201,因此 6 个数字随机匹配一个特定序列的机会为 1/13841287201。概率表示,给定一个以概率 p
发生的事件,直到该事件发生之前预期的试验次数 E
简单地定义为 E=1/p
——在本例中为 E=13841287201
。这意味着您的循环在中奖之前预计会运行大约 140 亿次。