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 + -
显示快捷键?