【问题标题】:Big array with random numbers with python带有随机数的大数组与python
【发布时间】:2012-08-23 11:15:09
【问题描述】:

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

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

但是当我尝试运行时:

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

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

有什么办法吗?

tkns

【问题讨论】:

  • 考虑到该列表的大小,您可能需要考虑一个数组库,如numpy:import numpy; vet = numpy.random.randint(0, 10, 10000)

标签: python arrays random


【解决方案1】:

我认为你在追求这样的东西:

vet = [random.randint(1,10) for _ in range(100000)]

【讨论】:

    【解决方案2】:

    你想要的是

    [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必须成立

    【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-23
      • 1970-01-01
      • 2014-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多