我希望我的程序能够从1到X中的数字,并随机将这些数字在X/2个列表中的Y个列表之间分配。我不希望在一次洗牌过程中重复一个数字,也不希望这些列表重复。因此,如果列表[1,2]不应该在同一个shuffle中包含1或2的另一个列表,并且整个结果中不应该有另一个[1,2]或[2,1]。在Python查询中生成随机列表
这是我想出来的,但是,它不断重复数字。任何adice?
import random
def Shuffler():
amount = int(raw_input("Numbers up to: "))
times = int(raw_input("Number of shuffles: "))
numberslist = range(1,amount+1)
twos = []
thisshuffle = []
final = []
while len(final) < (amount/2)*times:
twos = []
thisshuffle = []
while len(twos) < 2:
if len(numberslist)!=0:
randomnumber = random.choice(numberslist)
if (randomnumber in twos) or (randomnumber in thisshuffle):
numberslist.remove(randomnumber)
else:
twos.append(randomnumber)
thisshuffle.append(randomnumber)
numberslist.remove(randomnumber)
else:
numberslist = range(1,amount+1)
if (twos or list(reversed(twos))) not in final:
final.append(twos)
k=0
for i in range(times): #this shit prints shit
print "%s:" % (i+1), final[k:k+amount/2]
print
k = k + amount/2
Shuffler()
Shuffler()