Raw File
random.cc
#include "random.h"

#include <gsl/gsl_randist.h>

// TODO make singleton
gsl_rng* _rng;

void initRNG(long long seed) {
  const gsl_rng_type* T;
  gsl_rng_env_setup();

  T = gsl_rng_default;
  _rng = gsl_rng_alloc(T);
  gsl_rng_set(_rng, seed);
}

int randint(int M) {
  return (int)gsl_rng_uniform_int(_rng, (unsigned long int)M);
}

double randdbl() { return gsl_rng_uniform(_rng); }

double randdblpos() { return gsl_rng_uniform_pos(_rng); }

double randgaussian(double sigma) { return gsl_ran_gaussian(_rng, sigma); }

gsl_rng* rng() { return _rng; }
back to top