#ifndef _RNG_H
#define _RNG_H
#include <random>
class RNG {
public:
RNG() :
_generator(_default_seed) { }
RNG(uint32_t seed):
_generator(seed) { }
double operator()();
private:
std::mt19937 _generator;
static std::uniform_real_distribution<> _urd;
static const int _default_seed;
};
#endif // _RNG_H
我正在尝试封装与包装类一起使用的随机数生成器。但是在尝试编译上面的代码时,我收到以下错误:
rng.h:37:错误:ISO C ++禁止声明'uniform_real_distribution',没有类型
rng.h:37:错误:无效使用'::'
rng.h:37:错误:预期';'在'&lt;'之前令牌
但我只想按照http://en.cppreference.com/w/cpp/numeric/random/uniform_real_distribution
中给出的示例进行操作答案 0 :(得分:1)
G ++ 4.4.7实现了Technical Report 1's random,而不是C ++ 11的随机。
这意味着没有@Override
public String getphone(long name,String address){
String phone= getHibernateTemplate().find("from Table where name=" + name+"AND address='" + address+"'");
return phone;
}
类型。
您可以编写如下代码:
std::uniform_real_distribution
虽然我怀疑它有问题,因为它返回的值远大于范围[0,1],这就是我所理解的极限应该是。
答案 1 :(得分:0)
#if defined __GNUC__
#define GCC_VERSION (__GNUC__ * 10000 \
+ __GNUC_MINOR__ * 100 \
+ __GNUC_PATCHLEVEL__)
#if GCC_VERSION < 40300
#include <tr1/random>
#else
#include <random>
#endif
#else
#include <random>
#endif
#include <iostream>
#include <sys/types.h>
typedef std::mt19937 generator_t;
typedef std::uniform_real<double> distribution_t;
typedef std::variate_generator<generator_t, distribution_t> variate_t;
int main() {
generator_t sparfun_rand;
variate_t sparfun_rand_unif(sparfun_rand, distribution_t(0.0,1.0));
distribution_t dist(0.0, 1.0);
for (int i = 0; i < 10 ; i++) {
std::cout << dist(sparfun_rand_unif) << std::endl;
}
}
使用gcc 4.4.7并使用-std = c ++ 0x标志。