C++与正态分布
从上图可以看出,当相差1个方差(σ), 满足要求的面积有68.27%.
当相差2个方差(σ)时,满足要求的面积有95.45.
当相差3个方差(σ)时,满足要求的面积有99.73%.
满足标准正态分的曲线,可以查表来求得正态分布的幅度.(见文后所附表格)
方差(Variance),是各个数据分别与其和的平均数之差的平方的和的平均数,用字母D表示。在概率论和数理统计中,方差用来度量随机变量和其数学期望(即均值)之间的偏离程度。
标准差(StandardDeviation),是离均差平方和平均后的方根,用σ表示。标准差是方差的算术平方根。标准差能反映一个数据集的离散程度。
测试代码:
- // NormalDistribution.cpp : Defines the entry point for the console application.
- //
- #include <stdio.h>
- #include <tchar.h>
- #include <iostream>
- #include <windows.h>
- #include <algorithm>
- #define _USE_MATH_DEFINES
- #include <math.h>
- using namespace std;
- // 高斯分布随机数系列,默认期望值为0,方差为1
- double GaussRand(double dExpect = , double dVariance = );
- double GaussRand(double dExpect, double dVariance)
- {
- static double V1, V2, S;
- static int phase = ;
- double X;
- if ( phase == )
- {
- do
- {
- double U1 = (double)rand() / RAND_MAX;
- double U2 = (double)rand() / RAND_MAX;
- V1 = * U1 - ;
- V2 = * U2 - ;
- S = V1 * V1 + V2 * V2;
- } while(S >= || S == );
- X = V1 * sqrt(- * log(S) / S);
- }
- else
- {
- X = V2 * sqrt(- * log(S) / S);
- }
- phase = - phase;
- return (X*dVariance + dExpect);
- }
- int _tmain(int argc, _TCHAR* argv[])
- {
- const int DATA_CNT = ;
- double dArrData[DATA_CNT] = {};
- double dSum = ;
- // 对所有数赋随机数,默认期望值为0,方差为1
- srand(GetTickCount());
- for (int nIdx = ; nIdx < DATA_CNT; nIdx++)
- {
- // 防止计算方差时数值过大
- dArrData[nIdx] = GaussRand();
- dSum += dArrData[nIdx];
- }
- // 求平均数
- double dAverageData = dSum / DATA_CNT;
- // 计算所有的数的方差(各个数据分别与其和的平均数之差的平方的和的平均数)
- double dVariance = 0.0;
- for (int nIdx = ; nIdx < DATA_CNT; nIdx++)
- {
- double dDeviate = dArrData[nIdx] - dAverageData;
- dVariance += pow(dDeviate, );
- }
- dVariance /= DATA_CNT;
- // 计算标准差(方差的算术平方根,反映一组数据的离散程序)
- double dStandardDeviation = sqrt(dVariance);
- // 计算0.5个正负标准差之间包含的数字个数
- int nDataCnt = ;
- for (int nIdx = ; nIdx < DATA_CNT; nIdx++)
- {
- double dDeviate = dArrData[nIdx] - dAverageData;
- if (abs(dDeviate) <= 0.5*dStandardDeviation)
- {
- nDataCnt++;
- }
- }
- cout<<nDataCnt<<endl;
- // 计算1个正负标准差之间包含的数字个数
- nDataCnt = ;
- for (int nIdx = ; nIdx < DATA_CNT; nIdx++)
- {
- double dDeviate = dArrData[nIdx] - dAverageData;
- if (abs(dDeviate) <= dStandardDeviation)
- {
- nDataCnt++;
- }
- }
- cout<<nDataCnt<<endl;
- // 计算2个正负标准差之间包含的数字个数
- nDataCnt = ;
- for (int nIdx = ; nIdx < DATA_CNT; nIdx++)
- {
- double dDeviate = dArrData[nIdx] - dAverageData;
- if (abs(dDeviate) <= *dStandardDeviation)
- {
- nDataCnt++;
- }
- }
- cout<<nDataCnt<<endl;
- // 计算3个正负标准差之间包含的数字个数
- nDataCnt = ;
- for (int nIdx = ; nIdx < DATA_CNT; nIdx++)
- {
- double dDeviate = dArrData[nIdx] - dAverageData;
- if (abs(dDeviate) <= *dStandardDeviation)
- {
- nDataCnt++;
- }
- }
- cout<<nDataCnt<<endl;
- return ;
- }
(附)标准正态分布表
φ( - 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++与正态分布的更多相关文章
- C语言产生标准正态分布或高斯分布随机数
C语言 产生标准正态分布或高斯分布 随机数 产生正态分布或高斯分布的三种方法: 1. 运用中心极限定理(大数定理) #include #include #define NSUM 25 double g ...
- STL库中的正态分布函数
在设计抽奖一类程序中,有时会需要一种概率“有较大可能获得一个普通结果,有较小可能获得一个糟糕或极好的结果”,这就可以用正态分布函数来获得这样一个结果. STL中已经提供了一系列随机分布的函数,包括正态 ...
- 一起啃PRML - 1.2.4 The Gaussian distribution 高斯分布 正态分布
一起啃PRML - 1.2.4 The Gaussian distribution 高斯分布 正态分布 @copyright 转载请注明出处 http://www.cnblogs.com/chxer/ ...
- 《A First Course in Probability》-chaper5-连续型随机变量-正态分布
古典统计学问题一开始起源于赌博,让我们看这样一道有关赌博的问题. Q:A.B两人进行n局赌博,A胜的概率是p,现在设置随机变量X表示A赢的局数,当X>np,A给赌场X-np元,否则B给赌场np- ...
- 关于javascript 数组的正态分布排序的一道面试题
最近几天顶着上海40°的凉爽天气找工作,心里是开心的不要不要的,每次面试都是要坐那里出半天汗才能回过神来,感觉到了这个世界对我深深的爱意,言归正传,面试过程中碰到了几次笔试,其中有这么一道题,由于实际 ...
- 正态分布(Normal distribution)又名高斯分布(Gaussian distribution)
正态分布(Normal distribution)又名高斯分布(Gaussian distribution),是一个在数学.物理及project等领域都很重要的概率分布,在统计学的很多方面有着重大的影 ...
- 用Python学分析 - 正态分布
正态分布(Normal Distribution) 1.正态分布是一种连续分布,其函数可以在实线上的任何地方取值. 2.正态分布由两个参数描述:分布的平均值μ和方差σ2 . 3.正态分布的取值可以从负 ...
- lillietest 正态分布的拟合优度测试
函数 lillietest格式 H = lillietest(X) %对输入向量X进行Lilliefors测试,显著性水平为0.05.H = lillietest(X,alpha) %在水平alpha ...
- 能量模型与softmax和RBM以及正态分布的关联
上面一篇文章中探讨了玻尔兹曼分布的起源: 在不清楚目标的真实分布,也不知道样本分布的时候,假设任意输入与输出组合都是同样可能发生的,这样是最公平,最无偏的先验. 因为无法直接统计出给定任意一种输入x, ...
随机推荐
- dom 按着shift多选
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- 学生成绩管理系统 1.0(Java+MySql)
真难…… 数据库建立不会,中文编码不会,插入数据不会,删除不会…… Java读入数据不会……数据库连接不会…… 你也好意思说自己是学计算机的啊魂淡…… 我会慢慢写2.0,3.0版的……噗…… src/ ...
- 错误提示:类型“GridView”的控件“GridView1”必须放在具有 runat=server 的窗体标记内 .
错误提示:类型“GridView”的控件“GridView1”必须放在具有 runat=server 的窗体标记内 在做导出数据到EXCEL程序中,出现了错误提示:类型“GridView”的控件“Gr ...
- Netbeans Platform 工程,免安装JDK
使用Netbeans 6.8 创建了一个Netbeans Platform 工程,以Zip形式发布后, 按照以下操作,可 以在客户端免安装JDK: 1. 从已安装JDK的计算机中,提取JDK:eg. ...
- 研究QGIS二次开发笔记(一)
为了在QT程序中嵌入一个地图,最终选择了QGIS来干这件事.选型阶段真是呵呵.我折腾的是QGIS2.4.0. 首先,到官方网站下载安装QGIS.如果你跟我一样懒的话,可能希望下载一个已经编译好的win ...
- Android打开WIFI或者移动网络的代码实现
MainActivity如下: package wy.testnetwork; import java.lang.reflect.Field; import java.lang.reflect.Inv ...
- 转载:rebar和erlang
使用rebar生成erlang release 并进行热代码升级 http://blog.sina.com.cn/s/blog_6530ad590100wmkn.html 使用rebar工具开发erl ...
- 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 ...
- python中使用list作为默认参数且调用时不给其赋值的问题
最近在写代码时发现一个有趣的地方,当python中的函数使用list作为默认参数且调用时不给其赋值时,无法通过在函数中将其赋值为[]来达到清空此默认参数的目的.按照道理来说,函数f1中的list为局部 ...
- wp8 在OnBackKeyPress事件中调用MessageBox.Show()崩溃
今天写代码的时候遇到一个问题,在wp8中执行下面的代码后,弹出对话框后,停滞一段时间程序退出. protected override void OnBackKeyPress(CancelEventAr ...