Python:平均图纸数量(随机生成的数字)

时间:2013-09-15 12:27:58

标签: python

我是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.. ????

1 个答案:

答案 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个数字的函数。