我需要使用随机数(10⁵数)生成一个大数组(或列表)。我这样想:
vet = random.sample(range(10),100000)
但是当我尝试跑步时:
vet = random.sample(range(10),10000)
文件“/usr/lib/python2.7/random.py”,第320行,样本中 提出ValueError(“样本大于人口”) ValueError:大于人口的样本
任何解决方案?
tkns
答案 0 :(得分:22)
你想要的是
[random.random() for _ in xrange(100000)]
来自random module documentation:
random.sample(population,k)返回k长度的唯一元素列表 从人口序列中选择。用于随机抽样而不用 更换。
所以当调用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;中返回一个整数值B] random.sample
时,等式len(population) >= k
必须包含答案 1 :(得分:8)
我认为你是在追求这样的事情:
vet = [random.randint(1,10) for _ in range(100000)]
答案 2 :(得分:1)
你可以使用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
您可以使用下面的函数和数组创建随机数矩阵。