22 return (1.0 - u)*a + u*b;
35 double r = std::sqrt(-2*std::log(u));
37 if (x) *x = r * std::cos(theta);
38 if (y) *y = r * std::sin(theta);
45 return mean + sigma * x;
54 if (q<0.0 || q>1.0)
return -1;
65 if (n <= 0 || q<0.0 || q>1.0)
return -1;
69 for (
int i=n-1; i>=0; --i) {
int vnl_sample_binomial(int n, double q)
Return random k, where P(X = k) = [kth term in binomial expansion of (q + (1-q))^n].
double vnl_sample_uniform(double a, double b)
return a random number uniformly drawn on [a, b).
Namespace with standard math functions.
void vnl_srand48(long seed)
void vnl_sample_normal_2(double *x, double *y)
two independent samples from a standard normal distribution.
int vnl_sample_bernoulli(double q)
Bernoulli distribution ("coin toss").
void vnl_sample_reseed()
re-seed the random number generator.
easy ways to sample from various probability distributions
T mean() const
Return mean of all matrix elements.
double vnl_sample_uniform01()
return a random number uniformly drawn on [0, 1.0).
double vnl_sample_normal(double mean, double sigma)
Normal distribution with given mean and standard deviation.