程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++與正態分布

C++與正態分布

編輯:C++入門知識

C++與正態分布


正態分布(Normal distribution)又名高斯分布(Gaussiandistribution)。若隨機變量X服從一個數學期望為μ、方差為σ^2的高斯分布,記為N(μ,σ^2)。其概率密度函數為正態分布的期望值μ決定了其位置,其標准差σ決定了分布的幅度。我們通常所說的標准正態分布是μ = 0,σ = 1的正態分布。

\

\

\

從上圖可以看出,當相差1個方差(σ), 滿足要求的面積有68.27%.

當相差2個方差(σ)時,滿足要求的面積有95.45.

當相差3個方差(σ)時,滿足要求的面積有99.73%.

滿足標准正態分的曲線,可以查表來求得正態分布的幅度.(見文後所附表格)

方差(Variance),是各個數據分別與其和的平均數之差的平方的和的平均數,用字母D表示。在概率論和數理統計中,方差用來度量隨機變量和其數學期望(即均值)之間的偏離程度。

標准差(StandardDeviation),是離均差平方和平均後的方根,用σ表示。標准差是方差的算術平方根。標准差能反映一個數據集的離散程度。

<喎?http://www.Bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+CrLiytS0+sLrOjxicj4KPC9wPgoKIDxwcmUgY2xhc3M9"brush:java;">// NormalDistribution.cpp : Defines the entry point for the console application. // #include #include #include #include #include #define _USE_MATH_DEFINES #include using namespace std; // 高斯分布隨機數系列,默認期望值為0,方差為1 double GaussRand(double dExpect = 0, double dVariance = 1); double GaussRand(double dExpect, double dVariance) { static double V1, V2, S; static int phase = 0; double X; if ( phase == 0 ) { do { double U1 = (double)rand() / RAND_MAX; double U2 = (double)rand() / RAND_MAX; V1 = 2 * U1 - 1; V2 = 2 * U2 - 1; S = V1 * V1 + V2 * V2; } while(S >= 1 || S == 0); X = V1 * sqrt(-2 * log(S) / S); } else { X = V2 * sqrt(-2 * log(S) / S); } phase = 1 - phase; return (X*dVariance + dExpect); } int _tmain(int argc, _TCHAR* argv[]) { const int DATA_CNT = 100000; double dArrData[DATA_CNT] = {0}; double dSum = 0; // 對所有數賦隨機數,默認期望值為0,方差為1 srand(GetTickCount()); for (int nIdx = 0; nIdx < DATA_CNT; nIdx++) { // 防止計算方差時數值過大 dArrData[nIdx] = GaussRand(); dSum += dArrData[nIdx]; } // 求平均數 double dAverageData = dSum / DATA_CNT; // 計算所有的數的方差(各個數據分別與其和的平均數之差的平方的和的平均數) double dVariance = 0.0; for (int nIdx = 0; nIdx < DATA_CNT; nIdx++) { double dDeviate = dArrData[nIdx] - dAverageData; dVariance += pow(dDeviate, 2); } dVariance /= DATA_CNT; // 計算標准差(方差的算術平方根,反映一組數據的離散程序) double dStandardDeviation = sqrt(dVariance); // 計算0.5個正負標准差之間包含的數字個數 int nDataCnt = 0; for (int nIdx = 0; nIdx < DATA_CNT; nIdx++) { double dDeviate = dArrData[nIdx] - dAverageData; if (abs(dDeviate) <= 0.5*dStandardDeviation) { nDataCnt++; } } cout<

\



(附)標准正態分布表


φ( - x ) = 1 φ( x )

x

0

0.01

0.02

0.03

0.04

0.05

0.06

0.07

0.08

0.09

0

0.500 0

0.504 0

0.508 0

0.512 0

0.516 0

0.519 9

0.523 9

0.527 9

0.531 9

0.535 9

0.1

0.539 8

0.543 8

0.547 8

0.551 7

0.555 7

0.559 6

0.563 6

0.567 5

0.571 4

0.575 3

0.2

0.579 3

0.583 2

0.587 1

0.591 0

0.594 8

0.598 7

0.602 6

0.606 4

0.610 3

0.614 1

0.3

0.617 9

0.621 7

0.625 5

0.629 3

0.633 1

0.636 8

0.640 4

0.644 3

0.648 0

0.651 7

0.4

0.655 4

0.659 1

0.662 8

0.666 4

0.670 0

0.673 6

0.677 2

0.680 8

0.684 4

0.687 9

0.5

0.691 5

0.695 0

0.698 5

0.701 9

0.705 4

0.708 8

0.712 3

0.715 7

0.719 0

0.722 4

0.6

0.725 7

0.729 1

0.732 4

0.735 7

0.738 9

0.742 2

0.745 4

0.748 6

0.751 7

0.754 9

0.7

0.758 0

0.761 1

0.764 2

0.767 3

0.770 3

0.773 4

0.776 4

0.779 4

0.782 3

0.785 2

0.8

0.788 1

0.791 0

0.793 9

0.796 7

0.799 5

0.802 3

0.805 1

0.807 8

0.810 6

0.813 3

0.9

0.815 9

0.818 6

0.821 2

0.823 8

0.826 4

0.828 9

0.835 5

0.834 0

0.836 5

0.838 9

1

0.841 3

0.843 8

0.846 1

0.848 5

0.850 8

0.853 1

0.855 4

0.857 7

0.859 9

0.862 1

1.1

0.864 3

0.866 5

0.868 6

0.870 8

0.872 9

0.874 9

0.877 0

0.879 0

0.881 0

0.883 0

1.2

0.884 9

0.886 9

0.888 8

0.890 7

0.892 5

0.894 4

0.896 2

0.898 0

0.899 7

0.901 5

1.3

0.903 2

0.904 9

0.906 6

0.908 2

0.909 9

0.911 5

0.913 1

0.914 7

0.916 2

0.917 7

1.4

0.919 2

0.920 7

0.922 2

0.923 6

0.925 1

0.926 5

0.927 9

0.929 2

0.930 6

0.931 9

1.5

0.933 2

0.934 5

0.935 7

0.937 0

0.938 2

0.939 4

0.940 6

0.941 8

0.943 0

0.944 1

1.6

0.945 2

0.946 3

0.947 4

0.948 4

0.949 5

0.950 5

0.951 5

0.952 5

0.953 5

0.953 5

1.7

0.955 4

0.956 4

0.957 3

0.958 2

0.959 1

0.959 9

0.960 8

0.961 6

0.962 5

0.963 3

1.8

0.964 1

0.964 8

0.965 6

0.966 4

0.967 2

0.967 8

0.968 6

0.969 3

0.970 0

0.970 6

1.9

0.971 3

0.971 9

0.972 6

0.973 2

0.973 8

0.974 4

0.975 0

0.975 6

0.976 2

0.976 7

2

0.977 2

0.977 8

0.978 3

0.978 8

0.979 3

0.979 8

0.980 3

0.980 8

0.981 2

0.981 7

2.1

0.982 1

0.982 6

0.983 0

0.983 4

0.983 8

0.984 2

0.984 6

0.985 0

0.985 4

0.985 7

2.2

0.986 1

0.986 4

0.986 8

0.987 1

0.987 4

0.987 8

0.988 1

0.988 4

0.988 7

0.989 0

2.3

0.989 3

0.989 6

0.989 8

0.990 1

0.990 4

0.990 6

0.990 9

0.991 1

0.991 3

0.991 6

2.4

0.991 8

0.992 0

0.992 2

0.992 5

0.992 7

0.992 9

0.993 1

0.993 2

0.993 4

0.993 6

2.5

0.993 8

0.994 0

0.994 1

0.994 3

0.994 5

0.994 6

0.994 8

0.994 9

0.995 1

0.995 2

2.6

0.995 3

0.995 5

0.995 6

0.995 7

0.995 9

0.996 0

0.996 1

0.996 2

0.996 3

0.996 4

2.7

0.996 5

0.996 6

0.996 7

0.996 8

0.996 9

0.997 0

0.997 1

0.997 2

0.997 3

0.997 4

2.8

0.997 4

0.997 5

0.997 6

0.997 7

0.997 7

0.997 8

0.997 9

0.997 9

0.998 0

0.998 1

2.9

0.998 1

0.998 2

0.998 2

0.998 3

0.998 4

0.998 4

0.998 5

0.998 5

0.998 6

0.998 6

x

0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

3

0.998 7

0.999 0

0.999 3

0.999 5

0.999 7

0.999 8

0.999 8

0.999 9

0.999 9

1.000 0

(附)正態分布概率表

Φ( u ) =



\

\

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved