import random
from random import sample
List1由用户创建。
list1=[]
your_number1= int(input("Input 1 number: "))
list1.append(your_number1)
your_number2= int(input("Input 2 number: "))
list1.append(your_number2)
your_number3= int(input("Input 3 number: "))
list1.append(your_number3)
your_number4= int(input("Input 4 number: "))
list1.append(your_number4)
your_number5= int(input("Input 5 number: "))
list1.append(your_number5)
your_number6= int(input("Input 6 number: "))
list1.append(your_number6)
while(1):
list2 = range(1, 50)
list2 = random.sample(list2, 6)
这是由随机创建的list2
for pair in zip(list1, list2):
if pair[0] == pair[1]:
print("You win")
break
else:
print("You lose")
此FOR必须比较2个列表
所有程序都是-------编写一个程序,该程序从用户的49个池中提取6个数字。该程序将考虑一组唯一的六个数字。然后程序开始绘制,直到绘制用户选择的数字列表。该程序会给出用户绘制数字的年限和天数(例如,需要x年x x天)。我们假设抽奖每天发生(一日抽奖一次)。 *
答案 0 :(得分:1)
您可以这样做:
import random
from random import sample
from collections import Counter
list1=[]
for i in range(1,7): # no need to repeat 6 times
list1.append(input(f"Input {i} number: "))
attempts = 0
numbers = range(1,50)
while(True):
list2 = random.sample(numbers, 6)
attempts += 1
if Counter(list1) == Counter(list2): # counter will make a comparison by counting how many times each number shows up in the list.
print(f"You win after {attempts}")
break
答案 1 :(得分:0)
import random
pool = list(range(1, 50))
bet = set(random.sample(pool, 6))
print(f"Random bet: {bet}")
days = 0
while set(random.sample(pool, 6)) != bet:
days += 1
print(f"You would have to try {days} days")
编辑:以前的版本花费的时间太长。我用numpy重新实现了它:
import numpy as np
pool = np.arange(1, 50, dtype=np.int8)
bet = np.sort(np.random.choice(pool, (6,)))
batch_size = 10 ** 6
tries = 0
while True:
draws = np.sort(np.random.choice(pool, size=(batch_size, 6)))
bingo = np.argwhere(np.all(draws - bet == 0, axis=1))
if bingo.shape == (1, 1):
print("It took", tries + bingo.flat[0])
break
tries += batch_size