本文目錄一覽:
如何畫正態分布曲線
正態分布應用最廣泛的連續型概率分布。通常所說的正態分布曲線指的是正態分布的密度函數的圖像。其特徵是「鍾」形曲線。
正態分布曲線一種概率分布。正態分布是具有兩個參數μ和σ^2的連續型隨機變數的分布,第一參數μ是遵從正態分布的隨機變數的均值,第二個參數σ2是此隨機變數的方差,所以正態分布記作N(μ,σ2)。遵從正態分布的隨機變數的概率規律為取μ鄰近的值的概率大,而取離μ越遠的值的概率越小;σ越小,分布越集中在μ附近,σ越大,分布越分散。
正態分布的密度函數的特點是:
關於直線x=μ對稱,在μ處達到最大值,在正(負)無窮遠處取值為0,在μ±σ處有拐點;
它的形狀是中間高兩邊低,圖像是一條位於x軸上方的鐘形曲線;
曲線與x軸圍成的面積為1;
當μ=0,σ^2=1時,稱為標準正態分布,記為N(0,1)。
正態分布曲線畫法:
1、可通過計算機中Excel、matlab、幾何畫板、geogebra等軟體來實現;
2、通過其特點,可以動手畫出大致圖形;
大致圖像如下:
1、μ對圖像的影響:
2、σ對圖像的影響:
Java如何設置標準正態分布函數?
沒辦法求出函數,,只能使用
數值積分
法
簡單的寫法效率非常低,要想效率比較高就得專門研究高級的數值積分演算法
我建議你使用查表法,就是把標準正態分布表硬編碼直接寫到程序里,然後查表
我
看了一下,表中一共就30*10=300個數(當然只是一半)
查表的速度絕對無與倫比的快
給你一個效率不高的辦法
public
static
double
y(double
x)
{
return
1
/
math.sqrt(2
*
math.pi)
*
math.pow(math.e,
-x
*
x
/
2);
}
public
static
double
fai(double
x)
{
if
(x
-3.9)
{
return
0;
}
else
if
(x
3.9)
{
return
1;
}
double
f
=
0;
double
pc
=
-5;
double
step
=
0.00001;
for
(double
i
=
pc;
i
x;
i
+=
step)
f
+=
y(i)
*
step;
return
f;
}
如何在java中擬合正態分布
% 設數據為x % 第一步, 計算均值, 計算樣本標準差 len = length(x); avg = mean(x); s = sum((x-avg).^2)/(len-1) % 第二步, 將上面結果代入高斯分布公式 % 第三步, 畫出圖形.
java編出正態分布的方法
* 標準正態分布分布函數。
* 入口參數u。 任意實數。 返回標準正態分布概率密度。
先是考慮把正態分布的那張表搞到程序中,通過查表的方式,小數點三位後面多出來的值使用公式來計算
正態分布中一些值得注意的量:
密度函數關於平均值對稱
平均值與它的眾數(statistical mode)以及中位數(median)同一數值。
函數曲線下68.268949%的面積在平均數左右的一個標準差範圍內。
java
public double nextDouble() {
return (((long)(next(26)) 27) + next(27))
/ (double)(1L 53);
}
private double nextNextGaussian;
private boolean haveNextNextGaussian = false;
synchronized public double nextGaussian() {
// See Knuth, ACP, Section 3.4.1 Algorithm C.
if (haveNextNextGaussian) {
haveNextNextGaussian = false;
return nextNextGaussian;
} else {
double v1, v2, s;
do {
v1 = 2 * nextDouble() – 1; // between -1 and 1
v2 = 2 * nextDouble() – 1; // between -1 and 1
s = v1 * v1 + v2 * v2;
} while (s = 1 || s == 0);
double multiplier = StrictMath.sqrt(-2 * StrictMath.log(s)/s);
nextNextGaussian = v2 * multiplier;
haveNextNextGaussian
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/193247.html