mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-10-30 04:20:22 -04:00 
			
		
		
		
	
		
			
	
	
		
			135 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			135 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|  | [section:uniform_dist Uniform Distribution] | ||
|  | 
 | ||
|  | 
 | ||
|  | ``#include <boost/math/distributions/uniform.hpp>`` | ||
|  | 
 | ||
|  |    namespace boost{ namespace math{ | ||
|  |     template <class RealType = double,  | ||
|  |               class ``__Policy``   = ``__policy_class`` > | ||
|  |     class uniform_distribution; | ||
|  |        | ||
|  |     typedef uniform_distribution<> uniform; | ||
|  | 
 | ||
|  |     template <class RealType, class ``__Policy``> | ||
|  |     class uniform_distribution | ||
|  |     { | ||
|  |     public: | ||
|  |        typedef RealType value_type; | ||
|  | 
 | ||
|  |        uniform_distribution(RealType lower = 0, RealType upper = 1); // Constructor. | ||
|  |           : m_lower(lower), m_upper(upper) // Default is standard uniform distribution. | ||
|  |        // Accessor functions. | ||
|  |        RealType lower()const; | ||
|  |        RealType upper()const; | ||
|  |     }; // class uniform_distribution | ||
|  |     | ||
|  |    }} // namespaces | ||
|  |     | ||
|  | The uniform distribution, also known as a rectangular distribution, | ||
|  | is a probability distribution that has constant probability. | ||
|  | 
 | ||
|  | The [@http://en.wikipedia.org/wiki/Uniform_distribution_%28continuous%29 continuous uniform distribution] | ||
|  | is a distribution with the  | ||
|  | [@http://en.wikipedia.org/wiki/Probability_density_function probability density function]: | ||
|  | 
 | ||
|  | f(x) = | ||
|  | 
 | ||
|  | * 1 / (upper - lower) for lower < x < upper | ||
|  | 
 | ||
|  | * zero for x < lower or x > upper | ||
|  |          | ||
|  | and in this implementation: | ||
|  |          | ||
|  | * 1 / (upper - lower) for x = lower or x = upper | ||
|  | 
 | ||
|  | The choice of x = lower or x = upper is made because statistical use of this distribution judged is most likely: | ||
|  | the method of maximum likelihood uses this definition. | ||
|  | 
 | ||
|  | There is also a [@http://en.wikipedia.org/wiki/Discrete_uniform_distribution *discrete* uniform distribution]. | ||
|  | 
 | ||
|  | Parameters lower and upper can be any finite value. | ||
|  | 
 | ||
|  | The [@http://en.wikipedia.org/wiki/Random_variate random variate] | ||
|  | x must also be finite, and is supported lower <= x <= upper. | ||
|  | 
 | ||
|  | The lower parameter is also called the | ||
|  | [@http://www.itl.nist.gov/div898/handbook/eda/section3/eda364.htm location parameter], | ||
|  | [@http://en.wikipedia.org/wiki/Location_parameter that is where the origin of a plot will lie], | ||
|  | and (upper - lower) is also called the [@http://en.wikipedia.org/wiki/Scale_parameter scale parameter]. | ||
|  | 
 | ||
|  | The following graph illustrates how the | ||
|  | [@http://en.wikipedia.org/wiki/Probability_density_function probability density function PDF] | ||
|  | varies with the shape parameter: | ||
|  | 
 | ||
|  | [graph uniform_pdf] | ||
|  | 
 | ||
|  | Likewise for the CDF: | ||
|  | 
 | ||
|  | [graph uniform_cdf] | ||
|  | 
 | ||
|  | [h4 Member Functions] | ||
|  | 
 | ||
|  |    uniform_distribution(RealType lower = 0, RealType upper = 1); | ||
|  |     | ||
|  | Constructs a [@http://en.wikipedia.org/wiki/uniform_distribution  | ||
|  | uniform distribution] with lower  /lower/ (a) and upper /upper/ (b). | ||
|  | 
 | ||
|  | Requires that the /lower/ and /upper/ parameters are both finite; | ||
|  | otherwise if infinity or NaN then calls __domain_error. | ||
|  | 
 | ||
|  |    RealType lower()const; | ||
|  |     | ||
|  | Returns the /lower/ parameter of this distribution. | ||
|  |     | ||
|  |    RealType upper()const; | ||
|  |        | ||
|  | Returns the /upper/ parameter of this distribution. | ||
|  | 
 | ||
|  | [h4 Non-member Accessors] | ||
|  | 
 | ||
|  | All the [link math_toolkit.dist_ref.nmp usual non-member accessor functions] | ||
|  | that are generic to all distributions are supported: __usual_accessors. | ||
|  | 
 | ||
|  | The domain of the random variable is any finite value, | ||
|  | but the supported range is only /lower/ <= x <= /upper/. | ||
|  | 
 | ||
|  | [h4 Accuracy] | ||
|  | 
 | ||
|  | The uniform distribution is implemented with simple arithmetic operators and so should have errors within an epsilon or two. | ||
|  | 
 | ||
|  | [h4 Implementation] | ||
|  | 
 | ||
|  | In the following table a is the /lower/ parameter of the distribution,  | ||
|  | b is the /upper/ parameter, | ||
|  | /x/ is the random variate, /p/ is the probability and /q = 1-p/. | ||
|  | 
 | ||
|  | [table | ||
|  | [[Function][Implementation Notes]] | ||
|  | [[pdf][Using the relation: pdf = 0 for x < a, 1 / (b - a) for a <= x <= b, 0 for x > b ]] | ||
|  | [[cdf][Using the relation: cdf = 0 for x < a, (x - a) / (b - a) for a <= x <= b, 1 for x > b]] | ||
|  | [[cdf complement][Using the relation: q = 1 - p, (b - x) / (b - a) ]] | ||
|  | [[quantile][Using the relation: x = p * (b - a) + a; ]] | ||
|  | [[quantile from the complement][x = -q * (b - a) + b ]] | ||
|  | [[mean][(a + b) / 2 ]] | ||
|  | [[variance][(b - a) [super 2] / 12 ]] | ||
|  | [[mode][any value in \[a, b\] but a is chosen.  (Would NaN be better?) ]] | ||
|  | [[skewness][0]] | ||
|  | [[kurtosis excess][-6/5 = -1.2 exactly. (kurtosis - 3)]] | ||
|  | [[kurtosis][9/5]] | ||
|  | ] | ||
|  | 
 | ||
|  | [h4 References] | ||
|  | * [@http://en.wikipedia.org/wiki/Uniform_distribution_%28continuous%29 Wikpedia continuous uniform distribution] | ||
|  | * [@http://mathworld.wolfram.com/UniformDistribution.html Weisstein, Weisstein, Eric W. "Uniform Distribution." From MathWorld--A Wolfram Web Resource.] | ||
|  | * [@http://www.itl.nist.gov/div898/handbook/eda/section3/eda3662.htm] | ||
|  | 
 | ||
|  | [endsect][/section:uniform_dist Uniform] | ||
|  | 
 | ||
|  | [/  | ||
|  |   Copyright 2006 John Maddock and Paul A. Bristow. | ||
|  |   Distributed under 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). | ||
|  | ] | ||
|  | 
 |