我需要生成一个带有随机数(10⁵ 数字)的大数组(或列表)。我是这样尝试的:
vet = random.sample(range(10),100000)
但是当我尝试运行时:
vet = random.sample(range(10),10000)
文件“/usr/lib/python2.7/random.py”,第 320 行,在示例中引发 ValueError(“样本大于总体”) ValueError:样本大于总体
有什么解决办法吗?
tkns
你想要的是
[random.random() for _ in xrange(100000)]
从随机模块文档:
random.sample(population, k) 返回从总体序列中选择的唯一元素的 ak 长度列表。用于无放回的随机抽样。
所以当你打电话时random.sample(range(10), 100000)
,你试图在长度为 10 的序列中提取 100000 个唯一元素,这显然是行不通的。
注意
random.random()
返回 [0 之间的浮点值;1)random.randrange([start], stop[, step])
从序列中返回一个随机元素range([start], stop[, step])
random.randint(a, b)
在 [a 中返回一个整数值;乙]random.sample
,等式len(population) >= k
必须成立我想你在追求这样的事情:
vet = [random.randint(1,10) for _ in range(100000)]
您可以使用 numpy 函数并创建一个 N 空间填充随机数的数组
import numpy as np
vector_size = 10000
one_dimensional_array = np.random.rand(vector_size)
two_dimensional_array = np.random.rand(vector_size, 2)
tree_dimensional_array = np.random.rand(vector_size, 3)
#and so on
您可以使用下面的函数和数组创建随机数矩阵。