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

2024-10-03 13:30:43 发布

您现在位置: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.. ????

Tags: 用户infromimport图形forrange数字
1条回答
网友
1楼 · 发布于 2024-10-03 13:30:43

首先,你想知道你的理论平均图纸数量,即(1/10)^6,假设不允许重复。因此,平均每1000000次尝试,你就会找到正确的数字。这只是在顺序重要的情况下,但我假设在你的情况下,顺序并不重要,所以你的平均值低于这个值。。。在

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

相关问题 更多 >