标准正态分布及其发生器

时间:2013-10-04 14:58:33

标签: c++ random generator distribution

在标题中:

#ifndef MYCLASS_H
#define MYCLASS_H

#include <random>
#include <cmath>
// other includes...

class MyClass
{
public:
    int GetResult();
private:

    std::normal_distribution<double> *dist1;
    std::default_random_engine rand;
    int model_min, model_max;
    int model_mean, model_sd;
    int var1;
};

#endif

在cpp

在初始化功能中:

var1 = 1000;
model_mean = 30;
model_sd = 12;
dist1 = new std::normal_distribution<double>( model_mean, model_sd );
model_min = 10;
model_max = 100;

在获取随机结果的函数中:

int MyClass::GetResult()
{
    int result;
    do {
        result = 0.5f + (*dist1)(rand);
    } while (result < model_min || result > model_max);

    result = result * var1;
    return result;
}

我调用初始化函数一次,然后调用GetResult()1000000次。在500到1000次之后,返回的结果为0.

我认为我在设置和使用std :: normal_distribution或std :: default_random_engine时犯了一个根本性的错误。 在500-1000调用GetResult之后,var1发生了一些奇怪的事情,它被设置为零。在设置为1000之后,我在代码中没有地方改变var1。

0 个答案:

没有答案