大佬教程收集整理的这篇文章主要介绍了C++ piecewise_constant_distribution分段常数分布随机数用法详解,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
// Demonstrating the piecewise constant distribution #include <random> // For distributions and random number generator #include <vector> // For vector container #include <map> // For map container #include <utility> // For pair type #include <algorithm> // For copy(),count(),remove() #include <iostream> // For standard streams #include <iterator> // For stream iterators #include <iomanip> // For stream manipulators #include <string> // For string class using std::string; int main() { std::vector<double> b {10,20,35,55}; // Intervals: 10-20,20-35,35-55 std::vector<double> w {4,10,6}; // Weights for the intervals std::piecewise_constant_distribution<> d {std::begin(b),std::end(b),std::begin(w)}; // Output the interval boundaries and the interval probabilities auto intvls = d.intervals(); std::cout << "intervals: "; std::copy(std::begin(intvls),std::end(intvls),std::ostream_iterator<double>{std::cout," "}); std::cout << " probability densities: "; auto probs = d.densities(); std::copy(std::begin(probs),std::end(probs)," "}); std::cout << '\n' << std::endl; std::random_device rd; std::default_random_engine rng {rd()}; std::map<int,size_t> results; //Stores and counts random values as integers // Generate a lot of random values... for(size_t i {}; i < 20000; ++i) ++results[static_cast<int>(std::round(d(rng)))]; // Plot the integer values auto max_count = std::max_element(std::begin(results),std::end(results),[](const std::pair<int,size_t>& pr1,const std::pair<int,size_t>& pr2) { return pr1.second < pr2.second; })->second; std::for_each(std::begin(results),[max_count](const std::pair<int,size_t>& pr) { if(!(pr.first % 10)) // Display value if multiple of 10 std::cout << std::setw(3) << pr.first << "-|"; else std::cout << " |"; std::cout << std::string(pr.second * 80 / max_count,'*')<< '\n'; }); }这样就生成了一个我们之前看到的区间和权重的分布,并用这个分布生成了大量的值,然后在将它们转换为整数后,将这些值的出现频率绘制成直方图。值会在页的下面运行,条形图从左到右地表示相对频率。
intervals: 10 20 35 55 probability densities: 0.02 0.0333333 0.015
10-|***********************
|***********************************************
|****************************************
|*******************************************
|**********************************************
|********************************************
|**********************************************
|**********************************************
|***********************************************
|********************************************
20-|**********************************************************
|************************************************************************
|**************************************************************************
|***************************************************************************
|******************************************************************************
|*****************************************************************************
|********************************************************************************
|***********************************************************************
|****************************************************************************
|***************************************************************************
30-|**************************************************************************
|*******************************************************************************
|******************************************************************************
|*************************************************************************
|***************************************************************************
|*******************************************************
|**********************************
|*********************************
|******************************
|***********************************
40-|***********************************
|**********************************
|********************************
|*******************************
|******************************
|***********************************
|*********************************
|******************************
|********************************
|**********************************
50-|*************************************
|*******************************
|*********************************
|*********************************
|*********************************
|***************
以上是大佬教程为你收集整理的C++ piecewise_constant_distribution分段常数分布随机数用法详解全部内容,希望文章能够帮你解决C++ piecewise_constant_distribution分段常数分布随机数用法详解所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。