繁体   English   中英

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

[英]I need to generate x random numbers in an interval from 1 to x but each number have to occur only once

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

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

另一件事是,我需要1到70128之间的每个数字只能生成一次。

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

您需要1x之间的x唯一的x随机数,然后只需要一个随机的范围

x = 70128
numbers = range(1, x + 1)
random.shuffle(numbers)

如果使用的是Python 3,则要向range()结果添加一个list()调用。

出于实用性,在Python 2.7上使用x = 10进行演示:

>>> import random
>>> x = 10
>>> numbers = range(1, x + 1)
>>> random.shuffle(numbers)
>>> numbers
[5, 2, 6, 4, 1, 9, 3, 7, 10, 8]

使用numpy的random.permutation函数,如果给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确实np.random.permutation(70128) + 1您的要求。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM