我需要生成一个随机数,实际上我需要从1到70128的70128个随机数。这是我正在使用的:
index = numpy.random.randint(1,70128,70128)
另一方面,我需要生成1到70128之间的每个数字只生成一次。
这意味着我需要一个70128随机生成的数字列表,介于1和70128之间,但每个数字只需要出现一次。
答案 0 :(得分:3)
您需要x
和1
之间的x
个随机数,这些数字都是唯一的,那么您只需要一个随机范围:
x = 70128
numbers = range(1, x + 1)
random.shuffle(numbers)
如果您使用的是Python 3,则需要对list()
结果添加range()
次调用。
使用x = 10
演示Python 2.7实用性:
>>> import random
>>> x = 10
>>> numbers = range(1, x + 1)
>>> random.shuffle(numbers)
>>> numbers
[5, 2, 6, 4, 1, 9, 3, 7, 10, 8]
答案 1 :(得分:1)
使用numpy的random.permutation
函数,如果给定单个标量参数x
,则会返回从0到x
的数字的随机排列。例如:
np.random.permutation(10)
给出:
array([3, 2, 8, 7, 0, 9, 6, 4, 5, 1])
因此,特别是np.random.permutation(70128) + 1
正是您所喜欢的。