Python - 随机样本生成器

时间:2018-04-29 22:45:17

标签: python random sample

所以我在Stackoverflow上的第一个问题。请善待:) 我对Python很陌生 - 但每天我都想变得更好。

我正在尝试解决这个问题: “从人口中生成1000个大小为50的随机样本。计算每个样本的平均值(因此你应该有1000个均值)并将它们放入列表norm_samples_50”

我的猜测是我必须使用randn函数 - 但我不能完全猜测如何根据上面的问题形成语法。我已经完成了研究并且无法找到合适的答案。非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

这是你想要的吗?

import random

# Creating a population replace with your own: 
population = [random.randint(0, 1000) for x in range(1000)]

# Creating the list to store all the means of each sample: 
means = []

for x in range(1000):
    # Creating a random sample of the population with size 50: 
    sample = random.sample(population,50)
    # Getting the sum of values in the sample then dividing by 50: 
    mean = sum(sample)/50
    # Adding this mean to the list of means
    means.append(mean)

答案 1 :(得分:1)

使用 Numpy 非常高效解决方案。

import numpy


sample_list = []

for i in range(50): # 50 times - we generate a 1000 of 0-1000random - 
    rand_list = numpy.random.randint(0,1000, 1000)
    # generates a list of 1000 elements with values 0-1000
    sample_list.append(sum(rand_list)/50) # sum all elements

Python one-liner

from numpy.random import randint


sample_list = [sum(randint(0,1000,1000))/50 for _ in range(50)]

为什么要使用 Numpy ?它非常有效且非常准确(十进制)。该库仅用于这些类型的计算和数字。使用标准库中的random很好,但不是那么快速或可靠。