![](/img/trans.png)
[英]How to generate random numbers with each random number having a difference of at least x with all other elements?
[英]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之间的随机生成数字的列表,但是每个数字只能出现一次。
您需要1
到x
之间的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.