(五)boost库之随机数random
boost庫為我們提供了許多的日常隨機(jī)數(shù)生成器:
 1.uniform_smallint:在小整數(shù)域內(nèi)的均勻分布?
 2.uniform_int:在整數(shù)域上的均勻分布?
 3.uniform_01:在區(qū)間[0,1]上的實數(shù)連續(xù)均勻分布?
 4.uniform_real:在區(qū)間[min,max]上的實數(shù)連續(xù)均勻分布?
 5.bernoulli_distribution:伯努利分布?
 6.binomial_distribution:二項分布?
 7.cauchy_distribution:柯西(洛倫茲)分布?
 8.gamma_distribution:伽馬分布?
 9.poisson_distribution:泊松分布?
 10.geometric_distribution:幾何分布?
 11.triangle_distribution:三角分布?
 12.exponential_distribution:指數(shù)分布?
 13.normal_distribution:正態(tài)分布?
 14.lognormal_distribution:對數(shù)正態(tài)分布?
 15.uniform_on_sphere:球面均勻分布
?
隨機(jī)數(shù)生成包括兩部分,一是隨機(jī)數(shù)種子,二是生成器,對于隨機(jī)數(shù)種子,使用boost::random::mt19937就夠用了
#include <iostream> #include <boost/random.hpp> #include <boost/random/random_device.hpp> boost::random::mt19937 gen; int _tmain(int argc, _TCHAR* argv[]) { { //整數(shù) boost::uniform_int<> real(1, 999); std::cout << real(gen) << std::endl; } { //實數(shù) boost::uniform_real<double> real(1, 5); std::cout << real(gen) << std::endl; } { //0-1上的實數(shù) boost::uniform_01<boost::mt19937&> u01(gen); //正態(tài)分布,參數(shù)分別為均值、方差 boost::normal_distribution<> nd(0, 1); std::cout << nd(u01) << std::endl; } boost::random::uniform_int_distribution<> dist(1, 1000); std::cout << dist(gen) << std::endl; std::cout << dist(gen) << std::endl; std::string chars( "abcdefghijklmnopqrstuvwxyz" "ABCDEFGHIJKLMNOPQRSTUVWXYZ" "1234567890" "!@#$%^&*()" "`~-_=+[{]{\\|;:'\",<.>/? "); boost::random::random_device rng; boost::random::uniform_int_distribution<> index_dist(0, chars.size() - 1); for(int i = 0; i < 8; ++i) { std::cout << chars[index_dist(rng)]; } return 0; }總結(jié)
以上是生活随笔為你收集整理的(五)boost库之随机数random的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: (四)boost库之正则表达式regex
- 下一篇: (六)boost库之内存管理shared
