【发布时间】:2016-06-20 06:36:49
【问题描述】:
我希望我的程序从 1 到 X 取数字,并将这些数字随机分布在 X/2 个列表中 Y 次。我不希望在一次洗牌期间重复一个数字,我也不希望列表重复。因此,如果存在列表 [1,2],则在同一个随机播放中不应该有另一个包含 1 或 2 的列表,并且整个结果中也不应该有另一个 [1,2] 或 [2,1]。
这是我想出的,但是,它不断重复数字。有什么建议吗?
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()
【问题讨论】:
标签: list python-2.7 random shuffle