2024-04-23 07:00:11 发布
网友
我想创建一个包含20000点的大列表,形式如下:
[[x, y], [x, y], [x, y]]
其中x和y可以是0到1000之间的任意随机整数。我怎样才能做到这一点,这样就没有重复的坐标[x,y]?在
由于n = 1001在您的例子中相对较小,^{}就可以了,从可能对的空间中随机抽取20000对(没有重复):
n = 1001
import random print random.sample([[x, y] for x in xrange(1001) for y in xrange(1001)], 20000)
这是最简洁易读的解决方案。(但是如果n非常大,生成整个点空间的计算效率将不高。)
n
你可以使用while循环来填充它直到它足够大:
>>> from random import randint >>> n, N = 1000, 20000 >>> points = {(randint(0, n), randint(0, n)) for i in xrange(N)} >>> while len(points) < N: ... points |= {(randint(0, n), randint(0, n))} ... >>> points = list(list(x) for x in points)
您最初的想法可能很慢,因为它是迭代检查containmentship的列表,即O(n)。它使用速度更快的集合,最后只转换为列表结构一次。在
试试这个:
import itertools x = range(0,10) aList =[] for pair in itertools.combinations(x,2): for i in range(0,10): aList.append(pair) print aList
如果你想要一个0-10之间的点,所有唯一的都存储在一个列表中, 或者你需要它的随机顺序,然后使用一些随机函数。在
由于} 就可以了,从可能对的空间中随机抽取20000对(没有重复):
n = 1001
在您的例子中相对较小,^{这是最简洁易读的解决方案。(但是如果
n
非常大,生成整个点空间的计算效率将不高。)你可以使用while循环来填充它直到它足够大:
您最初的想法可能很慢,因为它是迭代检查containmentship的列表,即O(n)。它使用速度更快的集合,最后只转换为列表结构一次。在
试试这个:
如果你想要一个0-10之间的点,所有唯一的都存储在一个列表中, 或者你需要它的随机顺序,然后使用一些随机函数。在
相关问题 更多 >
编程相关推荐