【发布时间】: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)