using System;
using System.Drawing;
using System.Security.Cryptography;
using System.Windows.Forms;
using System.Windows.Forms.VisualStyles;
using System.Windows.Markup;
namespace BernoulliGaussDistribution
{
public partial class BernoulliGaussFrom : Form
{ //Bernoulli Gauss distribution is continuous,
//but first-order derivative not continuous!
//Combinate the Bernoulli and the Gauss distribution
//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 BernoulliGaussFrom()
{
InitializeComponent();
}
int bern(double p){ //bernoulli function
//erlang distribution
int t = 0; double r;
r = rd.NextDouble();
t =(r<=p)? 0 : 1;
return t;
}
double gauss(double mean, double sigma){ // gauss function
double r = 0.0;
for (int i = 0; i < 12; i++) r += rd.NextDouble();
r = r - 6.0;
r = mean+r*sigma;
return r;
}
double bg(double p,double mean, double sigma) { //Bernoulli Gauss function
double r = 0.0;
if (bern(p) == 0)// trigger! like the rain droping on plate make sound
r = gauss(mean, sigma);
else
r =0.0; //silent
return r;
}
private void btCreateData_Click(object sender, EventArgs e)
{
double r;
double[] value = new double[50];
double p = 0.4, mean = 0.0, sigma = 1.0;
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();
}
//Bernoulli Gauss scatter diagram
for (int i = 0; i < 10; i++){
for (int j = 0; j < 5; j++){
r=bg(p,mean,sigma);
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("f6") + "\t\n ");
}
}
//probability mass fuction diagram
for (int i = 0; i < 50; i++)
{
this.chart_MakeCurve.Series[0].Points.AddXY(i, value[i]);
tbDensityData.AppendText("X is:" + i.ToString("f0") + " " + "BG Value is:" + value[i].ToString("f3") + "\t\n");
}
}
}
}
Bernoulli Gauss Distribution
于 2023-08-04 08:07:35 首次发布