Эффективное использование ускоренного распределения
(Перефразировал вопрос)
Я создаю класс-оболочку для ускорения нормального распространения и хочу сделать его максимально эффективным.
Если я использую:
double x = 0.0;
boost::variate_generator<boost::mt19937&,boost::normal_distribution<> > var_nor(rng, nd);
for (int i=0; i<20; i++) {
double x = var_nor();
}
Цикл работает отлично. Меня беспокоит то, что я не хочу объявлять что-либо без необходимости, так как метод вызывается много раз. Я попытался разделить код и поместить эту строку в конструктор:
boost::variate_generator<boost::mt19937&,boost::normal_distribution<> > var_nor(rng, nd);
и есть пример метода, который делает это:
double x = var_nor();
return x;
Но в этом случае я получаю сообщение о том, что var_nor () (т.е. без аргументов) не найден. Может ли кто-нибудь сказать мне, что происходит с этими заявлениями повышения, т.е. что это
boost:variate_generate etc.
линия на самом деле делать сvar_nor? With my limited C++ knowledge, it looks as if var_nor is being defined with two different signatures.
Спасибо, парни Пит