(перефразировав вопрос)Эффективное использование распределения форсирования
Я создаю класс обертки для повышения нормального распределения и хочу сделать его максимально эффективным.
Если я использую:
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 т.д.
линии на самом деле делают в с var_nor? С моим ограниченным знанием C++, похоже, что var_nor определяется двумя разными сигнатурами.
Спасибо, ребята Пит
Конструктор странно: он определил некоторые совершенно бесполезные локальные переменные, и он не может инициализировать какой-либо из членов класса , Может быть, время для хорошей книги на C++? –