c# - 中心极限定理

标签 c# math theory

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

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]++;
        }
    }
}

最佳答案

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

您的程序模拟将 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 的增加它变得越来越钟形。这证明了中心极限定理。

关于c# - 中心极限定理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7077429/

相关文章:

c# - 对于 : Razor with Javascript method inside tbody

math - 如何将一个数字近似为小数点后 n 位?

算法:对于 G = (V,E),如何确定边集(e 属于 E)是否是图的有效割集

算法 - 寻找最大周长的三角形

c# - 是否可以检测导航事件中是否加载了 IFRAME?

c# - "Debugging lambda expressions with Visual Studio"不再工作?

c# - 将来自控制台的用户输入解析为 C# 中的命令行参数

javascript - 用javascript控制随机数

python - Python 3.7 math.remainder 和 %(模运算符) 之间的区别

c# - 使用 ref 表示参数将被修改