我需要有一个列表,其中我有一个列表,其中随机生成的值为1到8之间,另一个列表的随机值也在1到8之间。我已经设法在下面的代码中执行此操作:
from random import *
listA = []
listB = []
inp = int(input('Number of values generated'))
for x in range(0,inp):
num = randint(0,8)
listA.append(num)
if num == 0:
numB = randint(1,8)
else:
numB = randint(0,8)
listB.append(numB)
print(listA)
print(listB)
第一个列表中的值不能为0,并且第二个列表中的值在同一个试验中也不能为零。我的代码中已经有了这个。不过这就是我遇到的问题。
[4, 5 ,2, 5 ,1]
[1, 2 ,3, 2 ,4]
在listA中,5生成两次,第二个列表下面的2生成两次。当他们创建这样的一对时,我无法找到从我的列表中获取这些内容的解决方案。
答案 0 :(得分:0)
您可以使用如下的帮助函数生成一个不在列表中的唯一编号,并将其附加到列表中。
这应该适合你:
def generateUnique(list, start, end): # Helper Function to generate and return unique number not in list
num = randint(start, end)
while num in list: # loop will keep generating a value, until it is unique in the given list
num = randint(start, end)
return num
from random import *
listA = []
listB = []
inp = int(input('Number of values generated'))
for x in range(0,inp):
num = generateUnique(listA, 0, 8)
listA.append(num)
if num == 0:
numB = generateUnique(listB, 1, 8)
else:
numB = generateUnique(listB, 0, 8)
listB.append(numB)
print(listA)
print(listB)
希望这有帮助!