Welcome

首页 / 软件开发 / C++ / C++:随机数 正态分布(norm distribution) 详解

C++:随机数 正态分布(norm distribution) 详解2014-11-16正态分布(norm distribution), 做为一种重要的分布规律, 有广泛的用途;

注意正态分布包含两个参数, 均值(mean) 和标准差(standard deviation);

随机库(#include <random>), 包含正态分布对象, norm_distribution<>, 可以用于生成正态分布;

代码如下:

#include <iostream>#include <vector>#include <string>#include <random>#include <algorithm>#include <cmath>using namespace std;int main(){std::default_random_engine e; //引擎std::normal_distribution<double> n(4, 1.5); //均值, 方差std::vector<unsigned> vals(9);for(std::size_t i=0; i != 200; ++i) {unsigned v = std::lround(n(e)); //取整-最近的整数if (v < vals.size())++vals[v];}for (std::size_t j=0; j != vals.size(); ++j)std::cout << j << " : " << vals[j] << std::string(vals[j], "*") << std::endl;int sum = std::accumulate(vals.begin(), vals.end(), 0);std::cout << "sum = " << sum << std::endl;return 0;}

输出:

0 : 3***1 : 8********2 : 20********************3 : 38**************************************4 : 58**********************************************************5 : 42******************************************6 : 23***********************7 : 7*******8 : 1*sum = 200
作者:csdn博客 Spike_King