mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-10-25 01:50:30 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			177 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			177 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| // 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
 | |
|   
 | |
| 
 | |
| */
 |