Python 生成n组无循环的随机数

Python 生成n组无循环的随机数,python,python-3.x,numpy,random,Python,Python 3.x,Numpy,Random,因此,当我在Python中生成1000组随机数(0..2000)时,我可以轻松地执行以下操作: iters = 1000 randIdx = [] numbers = range(0, 2000) for i in range(iters): randIdx.append(random.sample(numbers, 8)) 问题是代码非常慢。有没有办法避免for循环告诉函数只输出1000个集,或者有什么解决方法? 我曾想过只生成8000个随机数,但问题出现了,当一组8个数字中

因此,当我在Python中生成1000组随机数(0..2000)时,我可以轻松地执行以下操作:

iters = 1000
randIdx = []
numbers = range(0, 2000)
for i in range(iters):
        randIdx.append(random.sample(numbers, 8))
问题是代码非常慢。有没有办法避免for循环告诉函数只输出1000个集,或者有什么解决方法? 我曾想过只生成8000个随机数,但问题出现了,当一组8个数字中不允许重复时,就不可能做到这一点

例如:

 randIdx=[]
 indexRange = range(0, 3)  
 for i in range(5):
     randIdx.append(random.sample(indexRange, 2))

[[0, 1], [2, 1], [2, 0], [1, 0], [2, 1]]

您可以使用
numpy
库执行以下操作:

import numpy as np

arr = np.random.randint(0, 2000, (1000, 8))

# array([[1026,   46, 1620, ...,  534, 1098, 1406],
#        [1081, 1235,  484, ..., 1124,  841,    4],
#        [1189, 1505, 1943, ...,   55, 1547, 1936],
#        ..., 
#        [1242,  877, 1129, ...,  230, 1226, 1399],
#        [1134,  939,  969, ..., 1600,  288, 1479],
#        [ 492,    5,  545, ..., 1093, 1805, 1404]])

然后只需对数组进行切片以进行一个选择,例如,
arr[0]
将为您提供作为数组的第一行。

您可以使用
numpy
库执行以下操作:

import numpy as np

arr = np.random.randint(0, 2000, (1000, 8))

# array([[1026,   46, 1620, ...,  534, 1098, 1406],
#        [1081, 1235,  484, ..., 1124,  841,    4],
#        [1189, 1505, 1943, ...,   55, 1547, 1936],
#        ..., 
#        [1242,  877, 1129, ...,  230, 1226, 1399],
#        [1134,  939,  969, ..., 1600,  288, 1479],
#        [ 492,    5,  545, ..., 1093, 1805, 1404]])

然后只需对数组进行切片以进行一个选择,例如,
arr[0]
会将第一行作为数组提供给您。

您当前的代码会引发一个异常,您能否为较小的输入显示所需输出的示例?e、 g.
range(5)
numbers=3
对不起,刚刚将范围从iters更改为numbers.。您当前的代码引发了一个异常,您能否为较小的输入显示所需输出的示例?e、 g.
range(5)
numbers=3
对不起,刚刚将范围从iters改为numbers。。