如何在Python中从总体中生成随机样本?

4

我想回答这个问题:

从总体中生成1,000个大小为50的随机样本。计算每个样本的平均值(因此您应该有1,000个平均值),并将它们放入列表norm_samples_50中。

我的猜测是我需要使用randn函数,但我无法根据上述问题来形成语法。我已经进行了研究,但找不到符合要求的答案。


你有查看语法文档吗?这可能会对你有所帮助。 - Ari K
你目前做了什么? - Wakun
是的 - 我查看了文档以形成语法。问题在于我无法弄清楚我所得到的问题和参数如何适应语法。我还搜索了YouTube视频,以了解如何构建这个问题。我真的把Stack当作最后的选择。 - Gitliong
这类问题的问题在于我们不知道你卡在哪里。你有Python编译器吗?哪个版本?你写过任何Python代码吗?你对编程了解多少?你知道,但是...什么?你遇到了错误?发布错误消息。你没有遇到错误,但代码没有按预期执行?发布你的代码。你希望它做什么?它做了什么? - Dour High Arch
谢谢Dour High Arch的教训。随着我对Stackoverflow协议的熟悉程度越来越高,我会将您的建议放在首位。 - Gitliong
2个回答

2
一个使用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一行代码

from numpy.random import randint


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

为什么要使用Numpy?它非常高效和精确(十进制)。这个库专门用于这些类型的计算和数字。使用标准库中的random也可以,但速度和可靠性远不如Numpy。


使用numpy 然后 使用Python内置的sum函数并不是很高效。 - user202729
@user202729 xd xd - innicoder

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
Zak,这是一个很好的答案,但即使你不确定,也不要问问题或表现出不确定性。你在这里是为了提供答案。另外一个提示是,总是创建一个摘要。我以前经常这样做,但这是你的答案的一部分,包含整个答案,应该由更少的单词组成。非常棒的答案!感谢您的服务和帮助! - innicoder

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接