高斯分布概念学习和C#自定义控件
正態分布(Normal distribution),也稱“常態分布”,又名高斯分布(Gaussian distribution);
是一個在數學、物理及工程等領域都非常重要的概率分布,
正態曲線呈鐘型,兩頭低,中間高,左右對稱因其曲線呈鐘形,因此人們又經常稱之為鐘形曲線;
若隨機變量X服從一個數學期望為μ、方差為σ2的正態分布,記為N(μ,σ2);
?正態分布有兩個參數,即期望(均數)μ和標準差σ,σ2為方差。
正態分布具有兩個參數μ和σ^2的連續型隨機變量的分布,第一參數μ是服從正態分布的隨機變量的均值,第二個參數σ^2是此隨機變量的方差,所以正態分布記作N(μ,σ2)。
μ是正態分布的位置參數,描述正態分布的集中趨勢位置。概率規律為取與μ鄰近的值的概率大,而取離μ越遠的值的概率越小。正態分布以X=μ為對稱軸,左右完全對稱。
σ描述正態分布資料數據分布的離散程度,σ越大,數據分布越分散,σ越小,數據分布越集中。也稱為是正態分布的形狀參數,σ越大,曲線越扁平,反之,σ越小,曲線越瘦高。
曾學過一點,已經忘記了;
?下面來C#做一個自定義控件;可對外提供正態分布隨機數;
解決方案新建一個winform項目和一個用戶控件項目;
用戶控件界面,
運行一下控件項目;
?
之后在工具箱中出現此自定義控件;
?
工程結構;
?
UserControl1.cs,
public partial class UserControl1: UserControl{public delegate void BtnClickHandle(object sender, EventArgs e);public event BtnClickHandle GSBtnClicked;public string Gss;public UserControl1(){InitializeComponent();}private void UserControl1_Load(object sender, EventArgs e){double[] x = NormalDistribution();Gss = x[0].ToString() + ", " + x[1].ToString();}private static double[] NormalDistribution(){Random rand = new Random();double[] y;double u1, u2, v1 = 0, v2 = 0, s = 0, z1 = 0, z2 = 0;while (s > 1 || s == 0){u1 = rand.NextDouble();u2 = rand.NextDouble();v1 = 2 * u1 - 1;v2 = 2 * u2 - 1;s = v1 * v1 + v2 * v2;}z1 = Math.Sqrt(-2 * Math.Log(s) / s) * v1;z2 = Math.Sqrt(-2 * Math.Log(s) / s) * v2;y = new double[] { z1, z2 };return y; //返回兩個服從正態分布N(0,1)的隨機數z0 和 z1}private void button1_Click(object sender, EventArgs e){textBox1.Text = Gss;if (GSBtnClicked != null){GSBtnClicked(sender, new EventArgs());}}}運行一下控件項目;?
?
外部可獲取自定義控件的Gss屬性;可觸發用戶控件的自定義事件;
winform項目添加一個自定義控件,一個label、一個button、一個textBox;
private void button1_Click_1(object sender, EventArgs e){label1.Text = userControl11.Gss;}private void userControl11_GSBtnClicked_1(object sender, EventArgs e){textBox1.Text = userControl11.Gss;}運行winform項目;點form1上的button1;?
?
點自定義控件中的button;
?
窗體使用了自定義控件以后,可看到自定義的事件;
?
生成正態分布隨機數的代碼來自,
? ? [轉載]用C#產生正態分布隨機數_suqin814_新浪博客?
總結
以上是生活随笔為你收集整理的高斯分布概念学习和C#自定义控件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用win32 API 下载文件
- 下一篇: C# 委托基本例子