Bernoulli Gauss Distribution

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");
            }
        }
    }
}

贝努利-高斯分布,BernoulliGaussDistribution资源-CSDN文库

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值