随机数 正态分布(norm distribution) 的 详解 及 代码



正态分布(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