, . , ,
x1, x2,..., mean,..., xn
mi = sum (x_i)/n
:
dev < xmax - , dev < mean - xmin. , - - (max of ( mean - xmin, xmax - mean)) ?
, , max of [ mean - xmin, xmax - mean], . :
(0, min of[ mean - xmin, xmax - mean])
(0, max of[ mean - xmin, xmax - mean]),
(0, min of[ mean - xmin, xmax - mean]), (
, )
(0, min of[ mean - xmin, xmax - mean])
, mi d [xmin, xmax].
x1 = mi - d, x2 = mi + d
mi d.
double generate_from_bernoulli_distribution(double mi, double d,
double a, double b) {
if (b <= a || d < 0) throw std::out_of_range( "invalid parameters");
if (d > std::min(mi - a, b - mi)) throw std::out_of_range( " invalid
standard deviation");
double x1 = mi - d, x2 = mi + d;
boost::mt19937 rng;
boost::bernoulli_distribution<> bd;
boost::variate_generator<boost::mt19937&,
boost::bernoulli_distribution<> > var_ber( rng, bd);
double bernoulli = var_ber();
return ( x1 + bernoulli * 2 * d);
}
void generate_n_from_bernoulli_distribution( double mi, double d, double a,
double b, std::vector<double>& res, int n) {
if (b <= a || d < 0) throw std::out_of_range( "invalid parameters");
if (d > std::min(mi - a, b - mi)) throw std::out_of_range( " invalid
standard deviation");
double x1 = mi - d, x2 = mi + d;
boost::mt19937 rng;
boost::bernoulli_distribution<> bd;
boost::variate_generator<boost::mt19937&,
boost::bernoulli_distribution<> > var_ber( rng, bd);
int i = 0;
for (; i < n; ++i) {
double bernoulli = var_ber();
res.push_back( x1 + bernoulli * 2 * d);
}
}
:
int main()
{
double rc = generate_from_bernoulli_distribution( 4, 1, 0, 10);
std::vector<double> sample;
generate_n_from_bernoulli_distribution( 4, 1, 0, 10, sample, 100);
return 0;
}
, - , . , , .
( ) [a, b]


a = mi -
b = mi + alpha
alpha -
, , mi. . a, b:


void uniform_distribution_intervals( double mi, double d, double& a, double& b) {
a = mi - d * std::sqrt(3.0);
b = mi + d * std::sqrt(3.0);
}
, mi, d, .
uniform_distribution_intervals (60/84, 1.7, a, b);
a = -2.9444863728670914, b = 2.9444863728670914.
, (0, max of[ mean - xmin, xmax - mean]), (0, min of[ mean - xmin, xmax - mean])