我是Python的新手,我希望通过在这里询问一些帮助或指南。
这是问题所在: 编写一个程序,估计在抽奖中挑选用户数字之前所需的平均绘图数量,该抽奖包括正确选择6个不同的数字,这些数字介于1和10之间。为此,运行循环1000次,随机生成一组用户编号和模拟图纸,直到绘制用户的编号。找出循环运行1000次所需的平均图纸数量。
我试图创造一些东西(下面),但我想不出如何获得这些平均数。似乎循环也不好。任何帮助或解决方案?提前谢谢你。
from random import randint
from random import choice #???
userlist = []
for y in range(6):
user = input("Enter your entry no.{} lotto number: ".format(y+1))
userlist.append(user)
x = 0
randomlotterylist = []
while not x>1000:
lottery = []
for i in range (6):
lot.append(randint(1,10))
randomlotterylist.append(lottery)
x = x + 1
#Next.. ????
答案 0 :(得分:1)
首先,您想知道您的理论平均绘图数量,即(1/10)^ 6,假设不允许重复。因此,平均每1,000,000次尝试你会得到正确的数字。只有在订单重要的情况下,但我认为在您的情况下订单无关紧要,因此您的平均价格低于...
from random import randint
def number_of_tries_before_hitting_jackpot(user_number):
n_tries = 0
while True:
random_number = set([randint(1,10) for i in range(1,7)])
if user_number == random_number:
return n_tries
else:
n_tries+=1
def ask_user_his_number():
userlist = []
for y in range(6):
user = input("Enter your entry no.{} lotto number: ".format(y+1))
userlist.append(user)
return set(userlist)
n_tries_list = []
for x in range(1,1001):
user_number = ask_user_his_number()
print user_number
tmp = number_of_tries_before_hitting_jackpot(user_number)
print tmp
n_tries_list.append(tmp)
avg_number_drawings = reduce(lambda x, y: x + y, n_tries_list) / len(n_tries_list)
print avg_number_drawings
这个代码不是我所做的,因为用户需要将其6个数字输入1000次(对用户来说很烦人)。您可以将ask_user_his_number函数更改为只是随机选择一组6个数字的函数。