生成符合正太分布随机数

0 篇文章 0 订阅
  1. const int N = 100;  
  2.     //const double MAX = 50.0;  
  3.     //const double MIN = 40.0;  
  4.     //const double MIU = 40.0;  
  5.     //const double SIGMA = 1.0;  
  6.     static Random aa = new Random((int)(DateTime.Now.Ticks / 10000));  
  7.   
  8.     public double AverageRandom(double min, double max)//产生(min,max)之间均匀分布的随机数  
  9.     {  
  10.        int MINnteger = (int)(min * 10000);  
  11.        int MAXnteger = (int)(max * 10000);  
  12.        int resultInteger = aa.Next(MINnteger, MAXnteger);  
  13.        return resultInteger / 10000.0;  
  14.      }  
  15.   
  16.     public double Normal(double x, double miu, double sigma) //正态分布概率密度函数  
  17.     {  
  18.         return 1.0 / (x * Math.Sqrt(2 * Math.PI) * sigma) * Math.Exp(-1 * (Math.Log(x) - miu) * (Math.Log(x) - miu) / (2 * sigma * sigma));  
  19.     }  
  20.   
  21.     public double Random_Normal(double miu, double sigma, double min, double max)//产生正态分布随机数  
  22.     {  
  23.         double x;  
  24.         double dScope;  
  25.         double y;  
  26.         do  
  27.         {  
  28.            x = AverageRandom(min, max);  
  29.            y = Normal(x, miu, sigma);  
  30.            dScope = AverageRandom(0, Normal(miu, miu, sigma));  
  31.          } while (dScope > y);  
  32.          return x;  
  33.      }  
[csharp]  view plain copy
  1. protected void btnGenerate_Click(object sender, EventArgs e)  
  2.    {  
  3.        //定义这个正态分布随机数的范围、均值和方差  
  4.        double min = double.Parse(txtBegin.Text);  
  5.        double max = double.Parse(txtEnd.Text);  
  6.        double miu = double.Parse(txtMIU.Text);  
  7.        double sigma = double.Parse(txtSIGMA.Text);  
  8.        //随机差生四个随机数  
  9.        TextBox1.Text = Random_Normal(miu,sigma,min,max).ToString();  
  10.        TextBox2.Text = Random_Normal(miu,sigma,min,max).ToString();  
  11.        TextBox3.Text = Random_Normal(miu,sigma,min,max).ToString();  
  12.        TextBox4.Text = Random_Normal(miu,sigma,min,max).ToString();  
  13.    }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值