import random
def getRes(N, X):
if N < X:
return
recordTwo = [] # 记录前两次被抽中过的
result = []
for i in range(5):
epoch = []
while len(epoch) < X:
number = random.randint(1, N) # 随机
if i < 2: # 前两次可以直接随机,直到出现这一轮没有重复过的
while number in epoch:
number = random.randint(1, N)
else: # 后面则同时需要这一轮没有重复过的,还需要没有同时出现在前两轮中的
while number in epoch or (number in recordTwo[0] and number in recordTwo[1]):
number = random.randint(1, N)
epoch.append(number)
if i < 2:
recordTwo.append(epoch)
result.append(epoch)
return result
N, X = map(int,input().split())
print(getRes(N, X))
首先是个list,这个没毛病。(命名为list1)把数填进去,就while和append,这个不难
然后赋值一个list2,list2 = list1,random.choice,从list2里面选,放入listRandom里面,然后del list2[],括号里面填你抽出来的数-1(因为索引比你的数小一)。这时候,循环X次。这种情况下,list2里面不再有你已经random出来的数字,而你random出来的数字会进到listRandom里面,然后输出。 这个就是第一个output。
然后清空list2,重复上面的循环(从list2 = list1开始),这就是第二次output,不过,要注意不能继续放入listRandom,随便定义个空list,放进去,这个是为了“前两次抽到的同学不再参与检测”。output完事之后,双for循环,判断listRandom和那个随便定义的空list 有哪些数重合了,然后del list1[],括号里面填数-1(因为索引比你的数小一),注意是list1。这样就确保“前两次抽到的同学不再参与检测”。
然后继续上述步骤,list2= list1。放入的话随便listRandom或者另一个都行(用的话必须得是空list,每次输出完事也要记得变成空list)
然后就可以了