正态分布(Normal distribution)又名高斯分布(Gaussiandistribution)。若随机变量X服从一个数学期望为μ、方差为σ^2的高斯分布,记为N(μ,σ^2)。其概率密度函数为正态分布的期望值μ决定了其位置,其标准差σ决定了分布的幅度。我们通常所说的标准正态分布是μ = 0,σ = 1的正态分布。

从上图可以看出,当相差1个方差(σ), 满足要求的面积有68.27%.

当相差2个方差(σ)时,满足要求的面积有95.45.

当相差3个方差(σ)时,满足要求的面积有99.73%.

满足标准正态分的曲线,可以查表来求得正态分布的幅度.(见文后所附表格)

方差(Variance),是各个数据分别与其和的平均数之差的平方的和的平均数,用字母D表示。在概率论和数理统计中,方差用来度量随机变量和其数学期望(即均值)之间的偏离程度。

标准差(StandardDeviation),是离均差平方和平均后的方根,用σ表示。标准差是方差的算术平方根。标准差能反映一个数据集的离散程度。

测试代码:

  1. // NormalDistribution.cpp : Defines the entry point for the console application.
  2. //
  3. #include <stdio.h>
  4. #include <tchar.h>
  5. #include <iostream>
  6. #include <windows.h>
  7. #include <algorithm>
  8. #define _USE_MATH_DEFINES
  9. #include <math.h>
  10. using namespace std;
  11.  
  12. // 高斯分布随机数系列,默认期望值为0,方差为1
  13. double GaussRand(double dExpect = , double dVariance = );
  14. double GaussRand(double dExpect, double dVariance)
  15. {
  16. static double V1, V2, S;
  17. static int phase = ;
  18. double X;
  19.  
  20. if ( phase == )
  21. {
  22. do
  23. {
  24. double U1 = (double)rand() / RAND_MAX;
  25. double U2 = (double)rand() / RAND_MAX;
  26.  
  27. V1 = * U1 - ;
  28. V2 = * U2 - ;
  29. S = V1 * V1 + V2 * V2;
  30. } while(S >= || S == );
  31.  
  32. X = V1 * sqrt(- * log(S) / S);
  33. }
  34. else
  35. {
  36. X = V2 * sqrt(- * log(S) / S);
  37. }
  38.  
  39. phase = - phase;
  40.  
  41. return (X*dVariance + dExpect);
  42. }
  43.  
  44. int _tmain(int argc, _TCHAR* argv[])
  45. {
  46. const int DATA_CNT = ;
  47. double dArrData[DATA_CNT] = {};
  48.  
  49. double dSum = ;
  50.  
  51. // 对所有数赋随机数,默认期望值为0,方差为1
  52. srand(GetTickCount());
  53. for (int nIdx = ; nIdx < DATA_CNT; nIdx++)
  54. {
  55. // 防止计算方差时数值过大
  56. dArrData[nIdx] = GaussRand();
  57. dSum += dArrData[nIdx];
  58. }
  59.  
  60. // 求平均数
  61. double dAverageData = dSum / DATA_CNT;
  62.  
  63. // 计算所有的数的方差(各个数据分别与其和的平均数之差的平方的和的平均数)
  64. double dVariance = 0.0;
  65. for (int nIdx = ; nIdx < DATA_CNT; nIdx++)
  66. {
  67. double dDeviate = dArrData[nIdx] - dAverageData;
  68. dVariance += pow(dDeviate, );
  69. }
  70. dVariance /= DATA_CNT;
  71.  
  72. // 计算标准差(方差的算术平方根,反映一组数据的离散程序)
  73. double dStandardDeviation = sqrt(dVariance);
  74.  
  75. // 计算0.5个正负标准差之间包含的数字个数
  76. int nDataCnt = ;
  77. for (int nIdx = ; nIdx < DATA_CNT; nIdx++)
  78. {
  79. double dDeviate = dArrData[nIdx] - dAverageData;
  80. if (abs(dDeviate) <= 0.5*dStandardDeviation)
  81. {
  82. nDataCnt++;
  83. }
  84. }
  85. cout<<nDataCnt<<endl;
  86.  
  87. // 计算1个正负标准差之间包含的数字个数
  88. nDataCnt = ;
  89. for (int nIdx = ; nIdx < DATA_CNT; nIdx++)
  90. {
  91. double dDeviate = dArrData[nIdx] - dAverageData;
  92. if (abs(dDeviate) <= dStandardDeviation)
  93. {
  94. nDataCnt++;
  95. }
  96. }
  97. cout<<nDataCnt<<endl;
  98.  
  99. // 计算2个正负标准差之间包含的数字个数
  100. nDataCnt = ;
  101. for (int nIdx = ; nIdx < DATA_CNT; nIdx++)
  102. {
  103. double dDeviate = dArrData[nIdx] - dAverageData;
  104. if (abs(dDeviate) <= *dStandardDeviation)
  105. {
  106. nDataCnt++;
  107. }
  108. }
  109. cout<<nDataCnt<<endl;
  110.  
  111. // 计算3个正负标准差之间包含的数字个数
  112. nDataCnt = ;
  113. for (int nIdx = ; nIdx < DATA_CNT; nIdx++)
  114. {
  115. double dDeviate = dArrData[nIdx] - dAverageData;
  116. if (abs(dDeviate) <= *dStandardDeviation)
  117. {
  118. nDataCnt++;
  119. }
  120. }
  121. cout<<nDataCnt<<endl;
  122.  
  123. return ;
  124. }

(附)标准正态分布表

φ( - 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

(附)正态分布概率表

C++与正态分布的更多相关文章

  1. C语言产生标准正态分布或高斯分布随机数

    C语言 产生标准正态分布或高斯分布 随机数 产生正态分布或高斯分布的三种方法: 1. 运用中心极限定理(大数定理) #include #include #define NSUM 25 double g ...

  2. STL库中的正态分布函数

    在设计抽奖一类程序中,有时会需要一种概率“有较大可能获得一个普通结果,有较小可能获得一个糟糕或极好的结果”,这就可以用正态分布函数来获得这样一个结果. STL中已经提供了一系列随机分布的函数,包括正态 ...

  3. 一起啃PRML - 1.2.4 The Gaussian distribution 高斯分布 正态分布

    一起啃PRML - 1.2.4 The Gaussian distribution 高斯分布 正态分布 @copyright 转载请注明出处 http://www.cnblogs.com/chxer/ ...

  4. 《A First Course in Probability》-chaper5-连续型随机变量-正态分布

    古典统计学问题一开始起源于赌博,让我们看这样一道有关赌博的问题. Q:A.B两人进行n局赌博,A胜的概率是p,现在设置随机变量X表示A赢的局数,当X>np,A给赌场X-np元,否则B给赌场np- ...

  5. 关于javascript 数组的正态分布排序的一道面试题

    最近几天顶着上海40°的凉爽天气找工作,心里是开心的不要不要的,每次面试都是要坐那里出半天汗才能回过神来,感觉到了这个世界对我深深的爱意,言归正传,面试过程中碰到了几次笔试,其中有这么一道题,由于实际 ...

  6. 正态分布(Normal distribution)又名高斯分布(Gaussian distribution)

    正态分布(Normal distribution)又名高斯分布(Gaussian distribution),是一个在数学.物理及project等领域都很重要的概率分布,在统计学的很多方面有着重大的影 ...

  7. 用Python学分析 - 正态分布

    正态分布(Normal Distribution) 1.正态分布是一种连续分布,其函数可以在实线上的任何地方取值. 2.正态分布由两个参数描述:分布的平均值μ和方差σ2 . 3.正态分布的取值可以从负 ...

  8. lillietest 正态分布的拟合优度测试

    函数 lillietest格式 H = lillietest(X) %对输入向量X进行Lilliefors测试,显著性水平为0.05.H = lillietest(X,alpha) %在水平alpha ...

  9. 能量模型与softmax和RBM以及正态分布的关联

    上面一篇文章中探讨了玻尔兹曼分布的起源: 在不清楚目标的真实分布,也不知道样本分布的时候,假设任意输入与输出组合都是同样可能发生的,这样是最公平,最无偏的先验. 因为无法直接统计出给定任意一种输入x, ...

随机推荐

  1. dom 按着shift多选

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  2. 学生成绩管理系统 1.0(Java+MySql)

    真难…… 数据库建立不会,中文编码不会,插入数据不会,删除不会…… Java读入数据不会……数据库连接不会…… 你也好意思说自己是学计算机的啊魂淡…… 我会慢慢写2.0,3.0版的……噗…… src/ ...

  3. 错误提示:类型“GridView”的控件“GridView1”必须放在具有 runat=server 的窗体标记内 .

    错误提示:类型“GridView”的控件“GridView1”必须放在具有 runat=server 的窗体标记内 在做导出数据到EXCEL程序中,出现了错误提示:类型“GridView”的控件“Gr ...

  4. Netbeans Platform 工程,免安装JDK

    使用Netbeans 6.8 创建了一个Netbeans Platform 工程,以Zip形式发布后, 按照以下操作,可 以在客户端免安装JDK: 1. 从已安装JDK的计算机中,提取JDK:eg. ...

  5. 研究QGIS二次开发笔记(一)

    为了在QT程序中嵌入一个地图,最终选择了QGIS来干这件事.选型阶段真是呵呵.我折腾的是QGIS2.4.0. 首先,到官方网站下载安装QGIS.如果你跟我一样懒的话,可能希望下载一个已经编译好的win ...

  6. Android打开WIFI或者移动网络的代码实现

    MainActivity如下: package wy.testnetwork; import java.lang.reflect.Field; import java.lang.reflect.Inv ...

  7. 转载:rebar和erlang

    使用rebar生成erlang release 并进行热代码升级 http://blog.sina.com.cn/s/blog_6530ad590100wmkn.html 使用rebar工具开发erl ...

  8. How can I terminate a thread that has a seperate message loop?

    http://www.techques.com/question/1-10415481/How-can-I-terminate-a-thread-that-has-a-seperate-message ...

  9. python中使用list作为默认参数且调用时不给其赋值的问题

    最近在写代码时发现一个有趣的地方,当python中的函数使用list作为默认参数且调用时不给其赋值时,无法通过在函数中将其赋值为[]来达到清空此默认参数的目的.按照道理来说,函数f1中的list为局部 ...

  10. wp8 在OnBackKeyPress事件中调用MessageBox.Show()崩溃

    今天写代码的时候遇到一个问题,在wp8中执行下面的代码后,弹出对话框后,停滞一段时间程序退出. protected override void OnBackKeyPress(CancelEventAr ...