这个问题在这里已有答案:
所以当我在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]
将为您提供第一行作为数组。