我需要在1到x的间隔内生成x个随机数,但每个数字只需要出现一次

时间:2014-10-24 16:30:55

标签: python random numbers generated

我需要生成一个随机数,实际上我需要从1到70128的70128个随机数。这是我正在使用的:

index = numpy.random.randint(1,70128,70128)

另一方面,我需要生成1到70128之间的每个数字只生成一次。

这意味着我需要一个70128随机生成的数字列表,介于1和70128之间,但每个数字只需要出现一次。

2 个答案:

答案 0 :(得分:3)

您需要x1之间的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正是您所喜欢的。