80 it_assert(prob >= 0.0 && prob <= 1.0,
"The Bernoulli source probability "
81 "must be between 0 and 1");
96 out.set_size(size,
false);
97 for (
int i = 0; i <
size; i++) out(i) =
sample();
101 out.set_size(rows, cols,
false);
102 for (
int i = 0; i < rows*cols; i++) out(i) =
sample();
137 void get_setup(
int &min,
int &max)
const;
169 void get_setup(
double &min,
double &max)
const;
176 temp *= hi_bound - lo_bound;
184 temp *= hi_bound - lo_bound;
192 out.set_size(size,
false);
193 for (
int i = 0; i <
size; i++) out(i) =
sample();
197 out.set_size(rows, cols,
false);
198 for (
int i = 0; i < rows*cols; i++) out(i) =
sample();
203 double lo_bound, hi_bound;
218 void setup(
double lambda) { l = lambda; }
252 mean(meanval), sigma(std::
sqrt(variance)) {}
257 { mean = meanval; sigma =
std::sqrt(variance); }
283 out.set_size(size,
false);
284 for (
int i = 0; i <
size; i++) out(i) =
sample();
289 out.set_size(rows, cols,
false);
290 for (
int i = 0; i < rows*cols; i++) out(i) =
sample();
294 static const double ytab[128];
295 static const unsigned int ktab[128];
296 static const double wtab[128];
297 static const double PARAM_R;
321 Gamma_RNG(
double a = 1.0,
double b = 1.0): alpha(a), beta(b) {}
323 void setup(
double a,
double b) { alpha = a; beta = b; }
351 void get_setup(
double &meanval,
double &variance)
const;
361 double l = sqrt_12var;
369 double mean, var, sqrt_12var;
382 norm_factor(1.0 / std::
sqrt(2.0)) {
383 setup(mean, variance);
395 variance = sigma * sigma;
417 double a = nRNG.
sample() * norm_factor;
418 double b = nRNG.
sample() * norm_factor;
419 return std::complex<double>(a, b);
424 out.set_size(size,
false);
425 for (
int i = 0; i <
size; i++) out(i) =
sample();
430 out.set_size(rows, cols,
false);
431 for (
int i = 0; i < rows*cols; i++) out(i) =
sample();
438 std::complex<double> m;
440 const double norm_factor;
457 void get_setup(
double &meanval,
double &variance,
double &rho)
const;
480 double mem, r, factr, mean, var, r1, r2;
505 Weibull_RNG(
double lambda = 1.0,
double beta = 1.0);
507 void setup(
double lambda,
double beta);
509 void get_setup(
double &lambda,
double &beta) { lambda = l; beta = b; }
535 void setup(
double sigma) { sig = sigma; }
546 double s1 = nRNG.
sample();
547 double s2 = nRNG.
sample();
563 Rice_RNG(
double sigma = 1.0,
double v = 1.0);
565 void setup(
double sigma,
double v) { sig = sigma; s = v; }
567 void get_setup(
double &sigma,
double &v) { sigma = sig; v = s; }
576 double s1 = nRNG.
sample() + s;
577 double s2 = nRNG.
sample();
608 inline mat
randu(
int rows,
int cols) { mat temp;
randu(rows, cols, temp);
return temp; }
635 inline mat
randn(
int rows,
int cols) { mat temp;
randn(rows, cols, temp);
return temp; }
649 inline cmat
randn_c(
int rows,
int cols) { cmat temp;
randn_c(rows, cols, temp);
return temp; }
655 #endif // #ifndef RANDOM_H