⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 random.cpp

📁 dysii是一款非常出色的滤波函数库
💻 CPP
字号:
//#if defined(__GNUC__) && defined(GCC_PCH)//  #include "aux.hpp"//#else  #include "Random.hpp"//#endif#include "boost/mpi.hpp"#include <time.h>#include <assert.h>using namespace indii::ml::aux;bool Random::isInit = false;gsl_rng* Random::rng = NULL;double Random::uniform(const double lower, const double upper) {  if (!isInit) {    init();  }  return lower + gsl_rng_uniform(rng) * (upper - lower);}double Random::gaussian(const double mean, const double sigma) {  if (!isInit) {    init();  }  if (sigma == 0.0) {    return mean;  } else {    return mean + gsl_ran_gaussian(rng, sigma);  }}void Random::seed(unsigned int seed) {  if (!isInit) {    init();  }  gsl_rng_set(rng, seed);}void Random::init() {  int seed;  /* construct random number generator */  gsl_rng_env_setup();  //rng = gsl_rng_alloc(gsl_rng_ranlxd2); // best randomness  rng = gsl_rng_alloc(gsl_rng_mt19937); // best randomness/speed tradeoff  /* select seed */  seed = time(NULL);  if (boost::mpi::environment::initialized()) {    /* ensure two nodes aren't seeded with the same number */    boost::mpi::communicator world;    const int rank = world.rank();    seed += 1000 * rank;  }  /* seed random number generator */  gsl_rng_set(rng, seed);  isInit = true;  /* post-condition */  assert (isInit);}void Random::terminate() {  if (isInit) {    gsl_rng_free(rng);  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -