⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 binomial_quiz_example.cpp

📁 Boost provides free peer-reviewed portable C++ source libraries. We emphasize libraries that work
💻 CPP
📖 第 1 页 / 共 2 页
字号:
Or, usually better, we can use the difference of cdfs instead:*/  cout << "Probability of getting between " << low << " and " << high << " answers right by guessing is "    <<  cdf(quiz, high) - cdf(quiz, low - 1) << endl; // 0.61323/*`[preProbability of getting between 3 and 5 answers right by guessing is 0.6132]And we can also try a few more combinations of high and low choices:*/  low = 1; high = 6;   cout << "Probability of getting between " << low << " and " << high << " answers right by guessing is "    <<  cdf(quiz, high) - cdf(quiz, low - 1) << endl; // 1 and 6 P= 0.91042  low = 1; high = 8;   cout << "Probability of getting between " << low << " and " << high << " answers right by guessing is "    <<  cdf(quiz, high) - cdf(quiz, low - 1) << endl; // 1 <= x 8 P = 0.9825  low = 4; high = 4;   cout << "Probability of getting between " << low << " and " << high << " answers right by guessing is "    <<  cdf(quiz, high) - cdf(quiz, low - 1) << endl; // 4 <= x 4 P = 0.22520/*`[preProbability of getting between 1 and 6 answers right by guessing is 0.9104Probability of getting between 1 and 8 answers right by guessing is 0.9825Probability of getting between 4 and 4 answers right by guessing is 0.2252][h4 Using Binomial distribution moments]Using moments of the distribution, we can say more about the spread of results from guessing.*/  cout << "By guessing, on average, one can expect to get " << mean(quiz) << " correct answers." << endl;  cout << "Standard deviation is " << standard_deviation(quiz) << endl;  cout << "So about 2/3 will lie within 1 standard deviation and get between "    <<  ceil(mean(quiz) - standard_deviation(quiz))  << " and "    << floor(mean(quiz) + standard_deviation(quiz)) << " correct." << endl;   cout << "Mode (the most frequent) is " << mode(quiz) << endl;  cout << "Skewness is " << skewness(quiz) << endl;/*`[preBy guessing, on average, one can expect to get 4 correct answers.Standard deviation is 1.732So about 2/3 will lie within 1 standard deviation and get between 3 and 5 correct.Mode (the most frequent) is 4Skewness is 0.2887][h4 Quantiles]The quantiles (percentiles or percentage points) for a few probability levels:*/  cout << "Quartiles " << quantile(quiz, 0.25) << " to "    << quantile(complement(quiz, 0.25)) << endl; // Quartiles   cout << "1 standard deviation " << quantile(quiz, 0.33) << " to "     << quantile(quiz, 0.67) << endl; // 1 sd   cout << "Deciles " << quantile(quiz, 0.1)  << " to "    << quantile(complement(quiz, 0.1))<< endl; // Deciles   cout << "5 to 95% " << quantile(quiz, 0.05)  << " to "    << quantile(complement(quiz, 0.05))<< endl; // 5 to 95%  cout << "2.5 to 97.5% " << quantile(quiz, 0.025) << " to "    <<  quantile(complement(quiz, 0.025)) << endl; // 2.5 to 97.5%   cout << "2 to 98% " << quantile(quiz, 0.02)  << " to "    << quantile(complement(quiz, 0.02)) << endl; //  2 to 98%  cout << "If guessing then percentiles 1 to 99% will get " << quantile(quiz, 0.01)     << " to " << quantile(complement(quiz, 0.01)) << " right." << endl;/*`Notice that these output integral values because the default policy is `integer_round_outwards`.[preQuartiles 2 to 51 standard deviation 2 to 5Deciles 1 to 65 to 95% 0 to 72.5 to 97.5% 0 to 82 to 98% 0 to 8]*///] [/binomial_quiz_example2]//[discrete_quantile_real/*`Quantiles values are controlled by the[link math_toolkit.policy.pol_ref.discrete_quant_ref discrete quantile policy]chosen.The default is `integer_round_outwards`,so the lower quantile is rounded down, and the upper quantile is rounded up.But we might believe that the real values tell us a little more - see[link math_toolkit.policy.pol_tutorial.understand_dis_quant Understanding Discrete Quantile Policy].We could control the policy for *all* distributions by  #define BOOST_MATH_DISCRETE_QUANTILE_POLICY real  at the head of the program would make this policy applyto this *one, and only*, translation unit.Or we can now create a (typedef for) policy that has discrete quantiles real (here avoiding any 'using namespaces ...' statements):*/  using boost::math::policies::policy;  using boost::math::policies::discrete_quantile;  using boost::math::policies::real;  using boost::math::policies::integer_round_outwards; // Default.  typedef boost::math::policies::policy<discrete_quantile<real> > real_quantile_policy;/*`Add a custom binomial distribution called ``real_quantile_binomial`` that uses ``real_quantile_policy``*/  using boost::math::binomial_distribution;  typedef binomial_distribution<double, real_quantile_policy> real_quantile_binomial;/*`Construct an object of this custom distribution:*/  real_quantile_binomial quiz_real(questions, success_fraction);/*`And use this to show some quantiles - that now have real rather than integer values.*/  cout << "Quartiles " << quantile(quiz, 0.25) << " to "    << quantile(complement(quiz_real, 0.25)) << endl; // Quartiles 2 to 4.6212  cout << "1 standard deviation " << quantile(quiz_real, 0.33) << " to "     << quantile(quiz_real, 0.67) << endl; // 1 sd 2.6654 4.194  cout << "Deciles " << quantile(quiz_real, 0.1)  << " to "    << quantile(complement(quiz_real, 0.1))<< endl; // Deciles 1.3487 5.7583  cout << "5 to 95% " << quantile(quiz_real, 0.05)  << " to "    << quantile(complement(quiz_real, 0.05))<< endl; // 5 to 95% 0.83739 6.4559  cout << "2.5 to 97.5% " << quantile(quiz_real, 0.025) << " to "    <<  quantile(complement(quiz_real, 0.025)) << endl; // 2.5 to 97.5% 0.42806 7.0688  cout << "2 to 98% " << quantile(quiz_real, 0.02)  << " to "    << quantile(complement(quiz_real, 0.02)) << endl; //  2 to 98% 0.31311 7.7880  cout << "If guessing, then percentiles 1 to 99% will get " << quantile(quiz_real, 0.01)     << " to " << quantile(complement(quiz_real, 0.01)) << " right." << endl;/*`[preReal QuantilesQuartiles 2 to 4.6211 standard deviation 2.665 to 4.194Deciles 1.349 to 5.7585 to 95% 0.8374 to 6.4562.5 to 97.5% 0.4281 to 7.0692 to 98% 0.3131 to 7.252If guessing then percentiles 1 to 99% will get 0 to 7.788 right.]*///] [/discrete_quantile_real]  }  catch(const std::exception& e)  { // Always useful to include try & catch blocks because    // default policies are to throw exceptions on arguments that cause    // errors like underflow, overflow.     // Lacking try & catch blocks, the program will abort without a message below,    // which may give some helpful clues as to the cause of the exception.    std::cout <<      "\n""Message from thrown exception was:\n   " << e.what() << std::endl;  }  return 0;} // int main()/*Output is:Binomial distribution example - guessing in a quiz.In a quiz with 16 questions and with a probability of guessing right of 25 % or 1 in 4Probability of getting none right is 0.0100226Probability of getting exactly one right is 0.0534538Probability of getting exactly two right is 0.133635Probability of getting exactly 11 answers right by chance is 2.32831e-010Guessed Probability 0      0.0100226 1      0.0534538 2      0.133635 3      0.207876 4      0.225199 5      0.180159 6      0.110097 7      0.0524273 8      0.0196602 9      0.0058252610      0.0013592311      0.00024713212      3.43239e-00513      3.5204e-00614      2.51457e-00715      1.11759e-00816      2.32831e-010Probability of getting none or one right is 0.0634764Probability of getting none or one right is 0.0634764Probability of getting <= 10 right (to fail) is 0.999715Probability of getting > 10 right (to pass) is 0.000285239Probability of getting > 10 right (to pass) is 0.000285239Probability of getting less than 11 (< 11) answers right by guessing is 0.999715Probability of getting at least 11(>= 11) answers right by guessing is 0.000285239, only 1 in 3505.83At most (<=)Guessed OK   Probability 0           0.01002259576 1           0.0634764398 2           0.1971110499 3           0.4049871101 4           0.6301861752 5           0.8103454274 6           0.9204427481 7           0.9728700437 8           0.9925302796 9           0.998355534610           0.999714760811           0.999961892812           0.999996216713           0.999999737114           0.999999988615           0.999999999816           1At least (>=)Guessed OK   Probability 0           0.9899774042 1           0.9365235602 2           0.8028889501 3           0.5950128899 4           0.3698138248 5           0.1896545726 6           0.07955725188 7           0.02712995629 8           0.00746972044 9           0.00164446537410           0.000285239191711           3.810715862e-00512           3.783265129e-00613           2.628657967e-00714           1.140870154e-00815           2.328306437e-01016           0Probability of getting between 3 and 5 answers right by guessing is 0.6132Probability of getting between 3 and 5 answers right by guessing is 0.6132Probability of getting between 1 and 6 answers right by guessing is 0.9104Probability of getting between 1 and 8 answers right by guessing is 0.9825Probability of getting between 4 and 4 answers right by guessing is 0.2252By guessing, on average, one can expect to get 4 correct answers.Standard deviation is 1.732So about 2/3 will lie within 1 standard deviation and get between 3 and 5 correct.Mode (the most frequent) is 4Skewness is 0.2887Quartiles 2 to 51 standard deviation 2 to 5Deciles 1 to 65 to 95% 0 to 72.5 to 97.5% 0 to 82 to 98% 0 to 8If guessing then percentiles 1 to 99% will get 0 to 8 right.Quartiles 2 to 4.6211 standard deviation 2.665 to 4.194Deciles 1.349 to 5.7585 to 95% 0.8374 to 6.4562.5 to 97.5% 0.4281 to 7.0692 to 98% 0.3131 to 7.252If guessing, then percentiles 1 to 99% will get 0 to 7.788 right.*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -