Стандартное нормальное распределение и его генератор

В шапке:

#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

В кпп

В функции инициализации:

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, и он обнуляется. В коде нет мест, где я изменяю var1 после его установки в 1000.

3

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector