这个公式,不好算,我觉得还是杨辉三角算起来方便:c#代码如下:
double 打印杨辉三角(int n)//n必须是偶数,展开项是n+1,中间项是n/2,此处返回中间项的概率202306131722
{
//for (int i = 0; i < n; i++)
//{
// //这种方法直接算,使用阶乘,方法一
//}
//迭代法也比较好,方法二
int a = 1;
List<int> temp上 = new List<int>();
if (a == 1) { temp上.Add(1); temp上.Add(1); }//a==1,是两项
do {//用杨辉三角法求解下一展开项系数
a++;//a,是a+1项
int[] hello = new int[a+1];hello[0] = 1;hello[a] = 1;
for (int i=0;i< a-1;i++)//更新temp上,temp下
{
int 肩上两项 = temp上[i] + temp上[i + 1];
hello[i+1]= 肩上两项;
}
temp上.Clear();
temp上= hello.ToList();
} while (a < n);
List<double> temp下 = new List<double>();
int total = 0;
for (int i = 0; i < temp上.Count; i++)
{
total = total + temp上[i];//求所有项的和
}
for (int i = 0; i < temp上.Count; i++)//n=10时,这里有11项
{
temp下.Add(temp上[i] / (total * 1.0));//求每一项的概率
}
//中间项自然就是temp下[10/2];即第六项
return temp下[n / 2];//返回中间项概率
}
n=10如下:
可以和前面的高斯函数再对比:
这样就方便多了。