12

我需要生成一个带有随机数(10⁵ 数字)的大数组(或列表)。我是这样尝试的:

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

但是当我尝试运行时:

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

文件“/usr/lib/python2.7/random.py”,第 320 行,在示例中引发 ValueError(“样本大于总体”) ValueError:样本大于总体

有什么解决办法吗?

tkns

4

3 回答 3

30

你想要的是

[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必须成立
于 2012-08-28T21:41:22.307 回答
11

我想你在追求这样的事情:

vet = [random.randint(1,10) for _ in range(100000)]
于 2012-08-28T21:39:26.240 回答
2

您可以使用 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

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

于 2018-04-24T15:49:55.540 回答