📄 policy_eg_10.cpp
字号:
// Copyright John Maddock 2007.// Use, modification and distribution are subject to the// Boost Software License, Version 1.0. (See accompanying file// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)// Note that this file contains quickbook mark-up as well as code// and comments, don't change any of the special comment mark-ups!//[policy_eg_10/*`To understand how the rounding policies for the discrete distributions can be used, we'lluse the 50-sample binomial distribution with a success fraction of 0.5 once again, and calculateall the possible quantiles at 0.05 and 0.95.Begin by including the needed headers:*/#include <iostream>#include <boost/math/distributions/binomial.hpp>/*`Next we'll bring the needed declarations into scope, anddefine distribution types for all the available rounding policies:*/using namespace boost::math::policies;using namespace boost::math;typedef binomial_distribution< double, policy<discrete_quantile<integer_round_outwards> > > binom_round_outwards;typedef binomial_distribution< double, policy<discrete_quantile<integer_round_inwards> > > binom_round_inwards;typedef binomial_distribution< double, policy<discrete_quantile<integer_round_down> > > binom_round_down;typedef binomial_distribution< double, policy<discrete_quantile<integer_round_up> > > binom_round_up;typedef binomial_distribution< double, policy<discrete_quantile<integer_round_nearest> > > binom_round_nearest;typedef binomial_distribution< double, policy<discrete_quantile<real> > > binom_real_quantile;/*`Now let's set to work calling those quantiles:*/int main(){ std::cout << "Testing rounding policies for a 50 sample binomial distribution,\n" "with a success fraction of 0.5.\n\n" "Lower quantiles are calculated at p = 0.05\n\n" "Upper quantiles at p = 0.95.\n\n"; std::cout << std::setw(25) << std::right << "Policy"<< std::setw(18) << std::right << "Lower Quantile" << std::setw(18) << std::right << "Upper Quantile" << std::endl; // Test integer_round_outwards: std::cout << std::setw(25) << std::right << "integer_round_outwards" << std::setw(18) << std::right << quantile(binom_round_outwards(50, 0.5), 0.05) << std::setw(18) << std::right << quantile(binom_round_outwards(50, 0.5), 0.95) << std::endl; // Test integer_round_inwards: std::cout << std::setw(25) << std::right << "integer_round_inwards" << std::setw(18) << std::right << quantile(binom_round_inwards(50, 0.5), 0.05) << std::setw(18) << std::right << quantile(binom_round_inwards(50, 0.5), 0.95) << std::endl; // Test integer_round_down: std::cout << std::setw(25) << std::right << "integer_round_down" << std::setw(18) << std::right << quantile(binom_round_down(50, 0.5), 0.05) << std::setw(18) << std::right << quantile(binom_round_down(50, 0.5), 0.95) << std::endl; // Test integer_round_up: std::cout << std::setw(25) << std::right << "integer_round_up" << std::setw(18) << std::right << quantile(binom_round_up(50, 0.5), 0.05) << std::setw(18) << std::right << quantile(binom_round_up(50, 0.5), 0.95) << std::endl; // Test integer_round_nearest: std::cout << std::setw(25) << std::right << "integer_round_nearest" << std::setw(18) << std::right << quantile(binom_round_nearest(50, 0.5), 0.05) << std::setw(18) << std::right << quantile(binom_round_nearest(50, 0.5), 0.95) << std::endl; // Test real: std::cout << std::setw(25) << std::right << "real" << std::setw(18) << std::right << quantile(binom_real_quantile(50, 0.5), 0.05) << std::setw(18) << std::right << quantile(binom_real_quantile(50, 0.5), 0.95) << std::endl;}/*`Which produces the program output:[preTesting rounding policies for a 50 sample binomial distribution,with a success fraction of 0.5.Lower quantiles are calculated at p = 0.05Upper quantiles at p = 0.95.Testing rounding policies for a 50 sample binomial distribution,with a success fraction of 0.5.Lower quantiles are calculated at p = 0.05Upper quantiles at p = 0.95. Policy Lower Quantile Upper Quantile integer_round_outwards 18 31 integer_round_inwards 19 30 integer_round_down 18 30 integer_round_up 19 31 integer_round_nearest 19 30 real 18.701 30.299]*///] ends quickbook import
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -