如何在Python中生成随机数字对,包括一个条目相同的数字对和排除两个条目相同的数字对?

2024-03-12

我正在使用 Python,并为此使用 numpy。 我想生成一对随机数。我想排除重复的两个条目的数字相同的对的结果,我想包括只有一个条目相同数字的对。我尝试使用

import numpy
numpy.random.choice(a,(m,n),replace=False) 

对于它,但它完全排除具有相同条目的任何元组,即

import numpy
numpy.random.choice(a=2,(m=2,n=1),replace=False) 

只给我 (1,0) 和 (0,1) 而不是 (1,1)、(0,0)、(1,0) 和 (0,1)。

我想这样做是因为我想绘制具有大 a 和大 n (如上面使用的)的随机元组样本,而不需要多次获得完全相同的元组。它也应该或多或少地有效。有没有已经实施的方法来做到这一点?


生成随机唯一坐标:

from random import randint

def gencoordinates(m, n):
    seen = set()

    x, y = randint(m, n), randint(m, n)

    while True:
        seen.add((x, y))
        yield (x, y)
        x, y = randint(m, n), randint(m, n)
        while (x, y) in seen:
            x, y = randint(m, n), randint(m, n)

Output:

>>> g = gencoordinates(1, 100)
>>> next(g)
(42, 98)
>>> next(g)
(9, 5)
>>> next(g)
(89, 29)
>>> next(g)
(67, 56)
>>> next(g)
(63, 65)
>>> next(g)
(92, 66)
>>> next(g)
(11, 46)
>>> next(g)
(68, 21)
>>> next(g)
(85, 6)
>>> next(g)
(95, 97)
>>> next(g)
(20, 6)
>>> next(g)
(20, 86)

正如你所看到的x坐标重复了!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在Python中生成随机数字对,包括一个条目相同的数字对和排除两个条目相同的数字对? 的相关文章

随机推荐