boost-random

    2热度

    1回答

    我正在C++中进行蒙特卡罗模拟,并且我使用了Boost作为随机数。我也使用了GSL。但事实证明,随机数生成是我最大的运行效率低下的一个,所以我只是用好老rand()从cstdlib开始。 有多差我在冒着有我的可怜的模拟随机数的属性?我使用10^6或10^7左右的随机数字样本。

    5热度

    2回答

    我试图生成随机使用boost随机64位无符号整数, 但我得到了与uniform_int断言失败。 struct timeval tv; boost::mt19937 randGen(tval.tv_usec); boost::uniform_int<> uInt64Dist(0, std::numeric_limits<uint64_t>::max()); boost::variate_ge

    1热度

    3回答

    我有一个特定的情况,我有一个对象,我想使用boost随机数生成器,并且它导致了一个更大的问题我似乎无法回答。以下是我试图制作的示例代码。 首先,我的头: Class MyObject { protected: double some variable; boost::random::mt19937 rgenerator; boost::uniform_real<d

    1热度

    2回答

    在我正在写的一个模拟中,我有一个代表必须采取某些操作的代理的类,并且我希望此代理可以访问随机数生成器。我听到了提升rng的好处,所以我想学习如何使用它们。 所以,这是问题所在。此代码编译并运行完美:所以 //Random.cpp #include <boost/random.hpp> #include <boost/limits.hpp> #include <iostream> #inc

    2热度

    3回答

    如果已经讨论过,请原谅我。我有它使用的boost :: uniform_int和boost ::取决于模板参数uniform_real,应返回相同类型的模板函数: template <typename N> N getRandom(int min, int max) { timeval t; gettimeofday(&t,NULL); boost::mt19937

    3热度

    6回答

    我的程序我需要具有不同范围的伪随机整数。 直到现在我使用rand()函数,但它有它的局限性。 我发现boost :: random库是一个更好的替代品,但我不想在整个地方创建随机生成器。 (我需要随机整数在许多类,因为它是一个压力测试软件,使每个决定伪随机( - >测试运行必须通过设置相同的开始种子可重复))。 这就是为什么我在我自己的课堂中将提升::随机排除在外。 这背后的想法是缓解使用,使得它

    0热度

    1回答

    我试图使用增长随机数生成长双(在64位机器上)。 在某些时候我使用 rng = boost::mt19937(); 然而,编译器认为,上线升压/无规/ mersenne_twister.hpp 88, x[i] = (1812433253UL * (x[i-1]^(x[i-1] >> (w-2))) + i) & mask; 存在着缩短了64的隐式转换bit到32位值... 我什至没有指定

    0热度

    1回答

    所以我试图用模板使用Boost.Random mt19937生成器。我的C++有点生疏,但从我的理解(和文档,一如既往Boost,不下于模糊),它应该采用指定它的返回类型(float/double)的模板参数。 我现在还不知道问题出在哪里......这一切都与<double>或<float>一起工作,并停止使用该模板。 下面的代码: template <class T> class Spikin

    2热度

    1回答

    我想在二维曲面上产生随机点,分布在x0,y0坐标周围。 我明白,我需要产生被称为“标准多元正态分布随机向量”,但我不知道如何使用升压::随机库做到这一点在C++,例如。 我知道有一个算法产生这个,叫做Box–Muller transform但我认为这必须已经在Boost中正确实现。 是否有任何简单的方法来生成多元正态分布,使用Boost :: random?

    6热度

    1回答

    我想用std::vector<double>初始化boost::random::discrete_distribution。 我的问题是,如果我有一个数组初始化它,就像在正式例如: double probabilities[] = { 0.5, 0.1, 0.1, 0.1, 0.1, 0.1 }; boost::random::discrete_distribution<> dist