using System;
using System.Drawing;
using System.Windows.Forms;
using System.Windows.Markup;
namespace BinomialDistribution
{
public partial class BinomialFrom : Form
{ //Binomial distribution is discrete,
//Widely used in (0,1) probability distribution analysis
//generate(0,1)interval random number
Random rd = new Random(Guid.NewGuid().GetHashCode());
//double uniform(double double int*)
public BinomialFrom()
{
InitializeComponent();
}
int bin(int n,double p){
int r = 0;
for(int i = 0; i < n;i++) r += bern(p);
return r;
}
int bern(double p) //bernoulli function
{ //
int t; double r;
r = rd.NextDouble();
t =(r<=p)? 0 : 1;
return t;
}
private void btCreateData_Click(object sender, EventArgs e)
{
int r, n=5; double p = 0.7; //binomial parameter
double[] value = new double[50];
for (int i = 0; i < value.Length; i++){
value[i] = 0.0;
}
tbPointData.Clear();
tbDensityData.Clear();
foreach (var series in chart_PointDistribute.Series){
series.Points.Clear();
}
foreach (var series in chart_MakeCurve.Series){
series.Points.Clear();
}
//Binomial scatter diagram
for (int i = 0; i < 10; i++){
for (int j = 0; j < 5; j++){
r=bin(n,p);
value[i * 5 + j] = r;
this.chart_PointDistribute.Series[0].Points.AddXY(i * 5 + j, r);
tbPointData.AppendText((i * 5 + j).ToString() + ": \t" + r.ToString() + "\t\n ");
}
}
//PMF probability mass function
int[] pmf = new int[6];
for (int i = 0; i < 50; i++){
for (int j = 0; j <= 5; j++){
if (j == value[i]) pmf[j] += 1;
}
}
//make PMF diagram
for (int i = 0;i <=5; i++){
this.chart_MakeCurve.Series[0].Points.AddXY(i, pmf[i]);
}
for (int i = 0; i <= 5; i++){
tbDensityData.AppendText("X is:" + i.ToString("f0") + "\t" + "PMF is:" + pmf[i].ToString() + "\t\n");
}
}
}
}