mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2026-06-02 14:04:55 -04:00
Merge commit '4ebe6417a5fce5f0994fc0c31bebf732be96a07c' as 'boost'
This commit is contained in:
@@ -0,0 +1,176 @@
|
||||
// Copyright John Maddock 2006
|
||||
// Copyright Paul A. Bristow 2010
|
||||
|
||||
// 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)
|
||||
|
||||
#ifdef _MSC_VER
|
||||
# pragma warning(disable: 4512) // assignment operator could not be generated.
|
||||
# pragma warning(disable: 4510) // default constructor could not be generated.
|
||||
# pragma warning(disable: 4610) // can never be instantiated - user defined constructor required.
|
||||
#endif
|
||||
|
||||
#include <iostream>
|
||||
using std::cout; using std::endl;
|
||||
#include <iomanip>
|
||||
using std::fixed; using std::left; using std::right; using std::right; using std::setw;
|
||||
using std::setprecision;
|
||||
|
||||
#include <boost/math/distributions/binomial.hpp>
|
||||
|
||||
void find_max_sample_size(double p, unsigned successes)
|
||||
{
|
||||
//
|
||||
// p = success ratio.
|
||||
// successes = Total number of observed successes.
|
||||
//
|
||||
// Calculate how many trials we can have to ensure the
|
||||
// maximum number of successes does not exceed "successes".
|
||||
// A typical use would be failure analysis, where you want
|
||||
// zero or fewer "successes" with some probability.
|
||||
//
|
||||
// using namespace boost::math;
|
||||
// Avoid potential binomial_distribution name ambiguity with std <random>
|
||||
using boost::math::binomial_distribution;
|
||||
|
||||
// Print out general info:
|
||||
cout <<
|
||||
"________________________\n"
|
||||
"Maximum Number of Trials\n"
|
||||
"________________________\n\n";
|
||||
cout << setprecision(7);
|
||||
cout << setw(40) << left << "Success ratio" << "= " << p << "\n";
|
||||
cout << setw(40) << left << "Maximum Number of \"successes\" permitted" << "= " << successes << "\n";
|
||||
//
|
||||
// Define a table of confidence intervals:
|
||||
//
|
||||
double alpha[] = { 0.5, 0.25, 0.1, 0.05, 0.01, 0.001, 0.0001, 0.00001 };
|
||||
//
|
||||
// Print table header:
|
||||
//
|
||||
cout << "\n\n"
|
||||
"____________________________\n"
|
||||
"Confidence Max Number\n"
|
||||
" Value (%) Of Trials \n"
|
||||
"____________________________\n";
|
||||
//
|
||||
// Now print out the data for the table rows.
|
||||
//
|
||||
for(unsigned i = 0; i < sizeof(alpha)/sizeof(alpha[0]); ++i)
|
||||
{
|
||||
// Confidence value:
|
||||
cout << fixed << setprecision(3) << setw(10) << right << 100 * (1-alpha[i]);
|
||||
// calculate trials:
|
||||
double t = binomial_distribution<>::find_maximum_number_of_trials(successes, p, alpha[i]);
|
||||
t = floor(t);
|
||||
// Print Trials:
|
||||
cout << fixed << setprecision(0) << setw(15) << right << t << endl;
|
||||
}
|
||||
cout << endl;
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
find_max_sample_size(1.0/1000, 0);
|
||||
find_max_sample_size(1.0/10000, 0);
|
||||
find_max_sample_size(1.0/100000, 0);
|
||||
find_max_sample_size(1.0/1000000, 0);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
|
||||
Output:
|
||||
|
||||
binomial_sample_sizes.cpp
|
||||
binomial_sample_sizes_example.vcxproj -> J:\Cpp\MathToolkit\test\Math_test\Debug\binomial_sample_sizes_example.exe
|
||||
________________________
|
||||
Maximum Number of Trials
|
||||
________________________
|
||||
|
||||
Success ratio = 0.001
|
||||
Maximum Number of "successes" permitted = 0
|
||||
|
||||
|
||||
____________________________
|
||||
Confidence Max Number
|
||||
Value (%) Of Trials
|
||||
____________________________
|
||||
50.000 692
|
||||
75.000 287
|
||||
90.000 105
|
||||
95.000 51
|
||||
99.000 10
|
||||
99.900 0
|
||||
99.990 0
|
||||
99.999 0
|
||||
|
||||
________________________
|
||||
Maximum Number of Trials
|
||||
________________________
|
||||
|
||||
Success ratio = 0.0001000
|
||||
Maximum Number of "successes" permitted = 0
|
||||
|
||||
|
||||
____________________________
|
||||
Confidence Max Number
|
||||
Value (%) Of Trials
|
||||
____________________________
|
||||
50.000 6931
|
||||
75.000 2876
|
||||
90.000 1053
|
||||
95.000 512
|
||||
99.000 100
|
||||
99.900 10
|
||||
99.990 0
|
||||
99.999 0
|
||||
|
||||
________________________
|
||||
Maximum Number of Trials
|
||||
________________________
|
||||
|
||||
Success ratio = 0.0000100
|
||||
Maximum Number of "successes" permitted = 0
|
||||
|
||||
|
||||
____________________________
|
||||
Confidence Max Number
|
||||
Value (%) Of Trials
|
||||
____________________________
|
||||
50.000 69314
|
||||
75.000 28768
|
||||
90.000 10535
|
||||
95.000 5129
|
||||
99.000 1005
|
||||
99.900 100
|
||||
99.990 10
|
||||
99.999 1
|
||||
|
||||
________________________
|
||||
Maximum Number of Trials
|
||||
________________________
|
||||
|
||||
Success ratio = 0.0000010
|
||||
Maximum Number of "successes" permitted = 0
|
||||
|
||||
|
||||
____________________________
|
||||
Confidence Max Number
|
||||
Value (%) Of Trials
|
||||
____________________________
|
||||
50.000 693146
|
||||
75.000 287681
|
||||
90.000 105360
|
||||
95.000 51293
|
||||
99.000 10050
|
||||
99.900 1000
|
||||
99.990 100
|
||||
99.999 10
|
||||
|
||||
|
||||
*/
|
||||
Reference in New Issue
Block a user