随机数 正态分布(norm distribution) 的 详解 及 代码
本文地址: http://blog.csdn.net/caroline_wendy/article/details/17335655
正态分布(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