【问题标题】:central limit theorem中心极限定理
【发布时间】:2011-10-27 23:48:16
【问题描述】:

我想观察中心极限定理并写了这个程序。但我很困惑,我必须这样观察。有什么问题吗?

xx
xxx
xxxx
xxxxx
xxxxxx
xxx
xxxx
xxx
x
x
namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
                Func();
        }
        public static void Func()
        {
            Random r = new Random();
            int[] d = new int [10];
            int sum;

            for (int k = 0; k < 5000; k++)
            {
                sum = 0;

                for (int i = 0; i < 50; i++)
                    sum += r.Next(0, 10000);
                Set(d, sum/50);

            }

            DispResult(d);
        }
        private static void DispResult(int[] d)
        {
            for (int i = 0; i < 10; i++)
            {
                for (int j = 0; j < d[i]; j += 1000)
                {
                    Console.Write("X");
                }
                Console.WriteLine();
            }
        }
        private static void Set(int[] d, int a)
        {

            if (a > 9000)
                d[9]++;
            else if (a > 8000)
                d[8]++;
            else if (a > 7000)
                d[7]++;
            else if (a > 6000)
                d[6]++;
            else if (a > 5000)
                d[5]++;
            else if (a > 4000)
                d[4]++;
            else if (a > 3000)
                d[3]++;
            else if (a > 2000)
                d[2]++;
            else if (a > 1000)
                d[1]++;
            else
                d[0]++;
        }
    }
}

【问题讨论】:

  • 我问我希望有这样的形状,但我观察到的不同,有什么不对吗?
  • 你的程序对我来说产生了非常接近正态分布的东西,你确定你运行的源代码版本与你在这里发布的相同吗?
  • 是的,我运行相同的版本,因为我很困惑。这是我的问题,是真的还是假的?
  • 如果增加样本数会怎样?
  • 增加样本数量(50 似乎太少,无法在这个数字范围内观察高斯行为)。另外,考虑将d/50 更改为round(d/50)

标签: c# math theory


【解决方案1】:

不清楚你在这里问什么,但我会试一试。

您的程序模拟将 10000 面骰子滚动 50 次并取平均值。然后执行 5000 次并显示结果的直方图。

中心极限定理指出,随着滚动次数的增加,直方图应该更接近高斯分布。

如果你想做的是观察中心极限定理的真实性,那么我会修改你的程序如下:我会让“Func”取一个整数 n,滚动数,然后有主要是:

for(int n = 1; n < 10; ++n)
{
   Func(n);
   Console.WriteLine("-----");
}

然后将 Func 中的所有“50”替换为 n。

这样您就可以模拟掷 1、2、3、4... 10 个骰子并取平均值。当您绘制直方图时,您会看到对于 1,直方图是矩形的,然后随着 n 的增加它变得越来越钟形。这证明了中心极限定理。

【讨论】:

  • 我记得有一天我在数学课上无聊的时候在我的 TI-85 上做这个。 :)
  • 格雷格,多么好的娱乐。现在我很无聊,所以如果你能建议像这个例子那样做,我会很高兴的。
猜你喜欢
  • 2017-03-11
  • 2012-02-21
  • 2014-02-15
  • 1970-01-01
  • 2021-02-11
  • 2019-04-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多