|
Boost Users : |
Subject: [Boost-users] [Random] Sigma equal to zero in normal distribution.
From: Rodolfo Federico Gamarra (rgamarra_at_[hidden])
Date: 2009-03-11 11:24:04
Hi all,
The documentation for the normal distribution
(http://www.boost.org/doc/libs/1_38_0/libs/random/random-distributions.html#normal_distribution)
states:
"Members
explicit normal_distribution(const result_type& mean = 0, const
result_type& sigma = 1);
Requires: sigma > 0"
In the actual code of this constructor
(http://www.boost.org/doc/libs/1_38_0/boost/random/normal_distribution.hpp)
it can be seen
"assert(_sigma >= result_type(0));".
That is, acepts sigma == 0.
Indeed, there's no "division-by-zero" or so, because the method that
is used ("Box-Muller") doesn't actually divide by sigma:
return _cached_rho * (_valid ? cos(result_type(2)*pi*_r1) :
sin(result_type(2)*pi*_r1)) * _sigma + _mean;
So, in this case, the numbers will be all equal to _mean. From the
mathematical point of view there's no such thing as a normal
distribution with sigma equal to zero; but, computationally, may be
handy to allow that.
What's the expected behavior? Is there a typo in the docs? Or is it
that the case sigma equal to zero is indeed undefined (so that
anything could happen)?
Thanks in advance, cheers.
-- Rodolfo Federico Gamarra
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net