# 北軟100 pC 高斯分佈(Gaussian distribution)
###### tags: `北軟100`
## 題目
高斯分佈(Gaussian distribution)又稱為常態分配 )又稱為常態分配(Normal distribution),在數學、物理以及工程等領域 、物理以及工程等領域,是非常重要的機率分佈 ,是非常重要的機率分佈,在統計學上,許多方面,有著重大的影響力。其中,一維度或是單變數高斯分佈 ,一維度或是單變數高斯分佈(Gaussian distribution),其機率密度函數 p(x)定義如下:
$$ y = p(x)=\dfrac{1}{\sqrt{2\pi}\sigma} \exp(-\dfrac{(x-u)^2}{2\sigma^2})$$
參數µ代表隨機變數 x 的平均值(mean),參數$σ^2$代表隨機變數 x 的變異度(variance),
當分佈中的平均值µ = 0 和變異度$σ^2$ = 1時,稱此分佈為標準常態分佈(standard normal distribution)。
請你設計一程式,可以讓使用者輸入隨機變數 ,可以讓使用者輸入隨機變數 x 的範圍[min ~ max],平均值 µ,變異度 $σ^2$和顯示顏色,按執行後,可以畫出此時使用者輸入參數之高斯分布(Gaussian distribution)圖形。執行範例如下 。執行範例如下:

左圖為輸入 x = [-5 ~ 5], 5 ~ 5], µ=0, $σ^2$=0.2,藍色之高斯分佈。
右圖為輸入 x = [-5 ~ 5], 5 ~ 5], µ=0, $σ^2$=1,紅色之高斯分佈。
評分:
1. 程式介面 (2.5 分)。
2. 可以讓使用者輸入資料(5 分)。
3. 水平座標,會隨著輸入資料不同而變動(5 分)。
4. 劃出的高斯分佈圖形正確(12.5 分)。
## 想法
不知道使用者隨機輸入的顏色是啥,所以我只新增Red Blue Green。
跟一般處理算式題的方式沒兩樣,刻一個函式來處理公式。
接下來將點標上去。
圖表要先做預處理,Series的ChartType要設為Spline。
## 程式碼(C#)
```csharp=
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace problemC
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public double getValue(double x,double u,double var)
{
return (1 / (Math.Sqrt(2 * Math.PI) * Math.Sqrt(var))) * Math.Exp(-(Math.Pow((x - u), 2)) / (2 * var));
}
private void Form1_Load(object sender, EventArgs e)
{
chart1.Series[0].Points.Clear();
comboBox1.Items.Add("Red");
comboBox1.Items.Add("Blue");
comboBox1.Items.Add("Green");
}
private void button1_Click(object sender, EventArgs e)
{
chart1.Series[0].Points.Clear();
chart1.Series[0].Color = Color.FromName(comboBox1.Text);
double var = Convert.ToDouble(textBox1.Text);
double u = Convert.ToDouble(textBox2.Text);
double xMin = Convert.ToDouble(textBox3.Text);
double xMax = Convert.ToDouble(textBox4.Text);
for(double i = xMin; i <= xMax; i+=0.1)
{
chart1.Series[0].Points.AddXY(i,getValue(i, u, var));
}
}
}
}
```