随机数字与python的大数组

时间:2012-08-28 21:36:46

标签: python arrays random

我需要使用随机数(10⁵数)生成一个大数组(或列表)。我这样想:

vet = random.sample(range(10),100000)

但是当我尝试跑步时:

vet = random.sample(range(10),10000)

文件“/usr/lib/python2.7/random.py”,第320行,样本中     提出ValueError(“样本大于人口”)   ValueError:大于人口的样本

任何解决方案?

tkns

3 个答案:

答案 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

numpy.random.rand

您可以使用下面的函数和数组创建随机数矩阵。