0

我想创建一百万个无序列表,xrange(1, 1000000)例如给我一个有序列表。我想我需要像 xrange 这样的东西,但是以无序的方式生成它。我想我可以通过循环手动生成一个列表,random.randint 并进行一些手动检查以保证列表中数字的唯一性,但我认为这会很耗时。有任何想法吗?

4

3 回答 3

3
import random
L = range(1, 1000000)
random.shuffle(L)  # shuffles in-place

在 Python3 上,您将需要使用

L = list(range(1, 1000000))
random.shuffle(L)  # shuffles in-place
于 2014-04-30T10:39:37.477 回答
3

使用randomNumPy 中的模块。具体来说np.random.permutation

>>> import numpy as np
>>> np.random.permutation(5)
array([2, 1, 0, 3, 4])
于 2014-04-30T10:39:46.800 回答
0

如果您正在使用numpy,您可以使用permutation

numpy.random.permutation(10)
>> array([1, 7, 6, 0, 5, 9, 2, 3, 8, 4])
于 2014-04-30T10:40:42.213 回答