【问题标题】:Implementing the Central Limit Theorem - Which Random Number Generator?实现中心极限定理 - 哪个随机数生成器?
【发布时间】:2020-08-03 13:00:08
【问题描述】:

所以基本上我正在尝试进行随机实验。这很简单。基本上我想看看中心极限定理所说的是否成立。

简单地说,中心极限定理的想法是,如果我们从随机实验中抽取相同大小的无限样本,这些样本的均值是正态分布的。

所以考虑一个骰子。那个骰子是魔法骰子,扔出去只能得到1、3、4或6,所以不能得到2和5。概率如下:

P[1] = 2/6
P[3] = 1/6
P[4] = 1/6
P[6] = 2/6

现在,如果我们采用 4 的样本量,即我们掷骰子 4 次,写下我们得到的结果,取平均值,然后做 100'000 次,当绘制为直方图时,我们应该,查看正态分布。

我使用 python 实现了这样的:

""" Set up the probability space """
experiment = [1,1,3,4,6,6]

    """ Experiment configuration """
    n = 4
    m = 100000
    bins = 20
    
    def throwDice():
        result = []
    
        for i in range(0,n):
            k = randrange(0,6)
            print(k)
            result.append(experiment[k])
    
        return result
    
    def sampleMeans():
        means = []
    
        for i in range(0,m):
            means.append(sum(throwDice())/4)
    
        return means
    
    def createHistrogram():
        means = sampleMeans()
    
        plt.hist(means, bins)
        plt.show()
    
    """ Run he experiment """
    createHistrogram()

这让我明白了

这并不奇怪,例如我们有“漏洞”。 2.75 和 4.75,因为我们缺少 2 和 5,即平均值为 2.75 和 4.75 的可能样本较少。其他人也可以这样做。

虽然一切看起来都不错,但我的问题实际上是关于 python 的随机生成器。这样做可以吗?什么样的随机数发生器最适合这种简单的“数值实验”?

【问题讨论】:

  • 第一:您不会让样本量趋于无穷大,而是让样本量趋于无穷大。第二:我只是假设如果使用 RNG 生成随机数值实验的数据,则必须确保它不会引入偏差。我不是在谈论特定 RNG 固有的偏见。您在另一条评论中正确指出,CLT 不限制我们从中提取数据的分布类型,因此这里不太可能遇到问题。我还是随机的新手,尤其是编码随机实验,所以我不确定我的数据生成是否有效。
  • 另外:是的,样本大小是硬编码的——已经很晚了。我实际上想让它可变,但最后,这是一个“错误”,但没关系。
  • 我想补充一点:如果你增加样本大小n,你会更接近正态分布。所以这是一个更好的拟合 - 你使误差更小,但定理中的限制是关于此类样本的数量。

标签: python stochastic


【解决方案1】:

根据文档Python randomrandom 库使用Almost all module functions depend on the basic function random(), which generates a random float uniformly in the semi-open range [0.0, 1.0),所以它是均匀分布。

由于大部分模块都是伪随机的,所以不好确认你的实验(因为要么遵循要么不遵循分布)。我认为你应该从random.org 生成纯随机数来测试结果。

【讨论】:

  • 我认为因为如果你使用正态分布,很明显实验是有效的(遵循CLT),如果你不使用正态分布,它可能不遵循CLT。
  • 所以 AerysS 提出的问题是:如果您从正态分布中抽取样本,那么得到正态分布也就不足为奇了(因为我们对所有值使用相同的种子)。这也是我关心的问题,但是 1. 我只是使用 RNG 从我的概率空间中选择一个值,即我的“选择”是正态分布的,这并不意味着(我认为)我选择的值是正常的分发 2. 我认为 Paul Hanking 确实有一点。我认为使用 random.org 中的“真实”随机数会更好。
  • 因此,AerysS 的担忧总体上是有效的,尽管我同意 Paul Hankin 的观点,即它不适用于这里。讨论这基本上是我的观点。
猜你喜欢
  • 2012-08-10
  • 2011-10-27
  • 2015-05-09
  • 2011-07-03
  • 1970-01-01
  • 2010-12-04
  • 2023-01-03
  • 2011-09-18
  • 2012-11-28
相关资源
最近更新 更多