neg_binomial_sample_sizes.cpp

来自「Boost provides free peer-reviewed portab」· C++ 代码 · 共 203 行

CPP
203
字号
// neg_binomial_sample_sizes.cpp// Copyright Paul A. Bristow 2007// Copyright John Maddock 2006// 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)#include <boost/math/distributions/negative_binomial.hpp>using boost::math::negative_binomial;// Default RealType is double so this permits use of:double find_minimum_number_of_trials(double k,     // number of failures (events), k >= 0.double p,     // fraction of trails for which event occurs, 0 <= p <= 1.double probability); // probability threshold, 0 <= probability <= 1.#include <iostream>using std::cout;using std::endl;using std::fixed;using std::right;#include <iomanip>using std::setprecision;using std::setw; //[neg_binomial_sample_sizes/*`It centres around a routine that prints outa table of minimum sample sizes for various probability thresholds:*/  void find_number_of_trials(double failures, double p);/*`First define a table of significance levels: these are the maximum acceptable probability that /failure/ or fewer events will be observed.*/  double alpha[] = { 0.5, 0.25, 0.1, 0.05, 0.01, 0.001, 0.0001, 0.00001 };/*`Confidence value as % is (1 - alpha) * 100, so alpha 0.05 == 95% confidencethat the desired number of failures will be observed.Much of the rest of the program is pretty-printing, the important partis in the calculation of minimum number of trials required for eachvalue of alpha using:  (int)ceil(negative_binomial::find_minimum_number_of_trials(failures, p, alpha[i]);*//*`find_minimum_number_of_trials returns a double,so ceil rounds this up to ensure we have an integral minimum number of trials.*/  void find_number_of_trials(double failures, double p){   // trials = number of trials   // failures = number of failures before achieving required success(es).   // p        = success fraction (0 <= p <= 1.).   //   // Calculate how many trials we need to ensure the   // required number of failures DOES exceed "failures".  cout << "\n""Target number of failures = " << failures;  cout << ",   Success fraction = " << 100 * p << "%" << endl;   // Print table header:   cout << "\n\n"           "____________________________\n"           "Confidence        Min Number\n"           " Value (%)        Of Trials \n"           "____________________________\n";   // Now print out the data for the alpha table values.  for(unsigned i = 0; i < sizeof(alpha)/sizeof(alpha[0]); ++i)   { // Confidence values %:      cout << fixed << setprecision(3) << setw(10) << right << 100 * (1-alpha[i]) << "      "      // find_minimum_number_of_trials      << setw(6) << right      << (int)ceil(negative_binomial::find_minimum_number_of_trials(failures, p, alpha[i]))      << endl;   }   cout << endl;} // void find_number_of_trials(double failures, double p)/*` finally we can produce some tables of minimum trials for the chosen confidence levels:*/int main(){    find_number_of_trials(5, 0.5);    find_number_of_trials(50, 0.5);    find_number_of_trials(500, 0.5);    find_number_of_trials(50, 0.1);    find_number_of_trials(500, 0.1);    find_number_of_trials(5, 0.9);    return 0;} // int main()//]  [/neg_binomial_sample_sizes.cpp end of Quickbook in C++ markup]/*Output is:Autorun "i:\boost-06-05-03-1300\libs\math\test\Math_test\debug\neg_binomial_sample_sizes.exe"Target number of failures = 5,   Success fraction = 50%____________________________Confidence        Min Number Value (%)        Of Trials ____________________________    50.000          11    75.000          14    90.000          17    95.000          18    99.000          22    99.900          27    99.990          31    99.999          36Target number of failures = 50.000,   Success fraction = 50.000%____________________________Confidence        Min Number Value (%)        Of Trials ____________________________    50.000         101    75.000         109    90.000         115    95.000         119    99.000         128    99.900         137    99.990         146    99.999         154Target number of failures = 500.000,   Success fraction = 50.000%____________________________Confidence        Min Number Value (%)        Of Trials ____________________________    50.000        1001    75.000        1023    90.000        1043    95.000        1055    99.000        1078    99.900        1104    99.990        1126    99.999        1146Target number of failures = 50.000,   Success fraction = 10.000%____________________________Confidence        Min Number Value (%)        Of Trials ____________________________    50.000          56    75.000          58    90.000          60    95.000          61    99.000          63    99.900          66    99.990          68    99.999          71Target number of failures = 500.000,   Success fraction = 10.000%____________________________Confidence        Min Number Value (%)        Of Trials ____________________________    50.000         556    75.000         562    90.000         567    95.000         570    99.000         576    99.900         583    99.990         588    99.999         594Target number of failures = 5.000,   Success fraction = 90.000%____________________________Confidence        Min Number Value (%)        Of Trials ____________________________    50.000          57    75.000          73    90.000          91    95.000         103    99.000         127    99.900         159    99.990         189    99.999         217Target number of failures = 5.000,   Success fraction = 40.000%____________________________Confidence        Min Number Value (%)        Of Trials ____________________________    50.000          10    75.000          11    90.000          13    95.000          15    99.000          18    99.900          21    99.990          25    99.999          28*/

⌨️ 快捷键说明

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