如何在python中从给定范围生成两个数字的随机唯一集合

时间:2020-09-11 16:12:33

标签: python python-3.x

我想从给定范围内的循环中生成x和y的随机数字集。

我尝试了以下代码,但如果'n'很小或循环了很多次,有时会返回重复的值。

    x = random.randint(0,n-1)
    y = random.randint(0,n-1)

3 个答案:

答案 0 :(得分:0)

您可以将生成的x和y存储在列表中。这样,您可以检查x和y是否已经存在,如果不存在,请添加新的。

l = []
n = 1
while len(l) < 101:
    if not l:
       x = random.randint(0,n-1)
       y = random.randint(0,n-1)
       l.append((x, y))
    else:
       x = random.randint(0,n-1)
       y = random.randint(0,n-1)
       if (x, y) not in l:
           l.append((x, y))
    n += 1

这将在每次循环时为您提供一个唯一的元组(x, y)

答案 1 :(得分:0)

以下方法应该起作用:

from random import choice
x = random.randint(0,n-1)
y=  choice([i for i in range(0,n-1) if i!=x])

答案 2 :(得分:0)

经过一段时间的思考,我想到了以下代码:

n = 5
k = 25
List = random.sample(range(n*n),k)
for i in range(k):
    a = List[i] // n
    b = List[i] % n
    List[i] = (a, b)