Я искал похожие вопросы, но не нашел их.Я хочу генерировать нормально распределенные случайные числа.Раньше я кодировал C и немного C ++ 98, но сейчас пытаюсь вернуться и изучить C ++ 11.
У меня есть функция для возврата затравленного RNG
auto seeded_rng () {
.... //do seeding.
std::default_random_engine Eng(/*seeds*/);
return Eng;
}
Inмоя основная функция - привязать ГСЧ к гауссовскому распределению
auto binded = std::bind(std::normal_distribution<double>{0,1.0},seeded_rng);
. Эта функция работает нормально.Я могу вызвать «binded ()» непосредственно в main, и он генерирует числа
Я хочу иметь объект моделирования, для которого нужно создать случайные числа.Мой вопрос касался того, как передать в «RNG_PART» ниже.
class sim
{
public:
sim( RNG_PART & rng, int_number_of sims ){ /* Do whatever */}
}
Так что если в основном, я хочу создать объект моделирования
sim A(binded, 100);
, он жалуется.Я пытался объявить
sim::sim(std::default_random_engine &rng, int number_of_sims){}
, но это жалуется.Какой тип я должен использовать, чтобы передать «привязанный» дистрибутив конструктору?Или я делаю это совершенно неправильно.Должен ли я просто объявить двигатель RNG глобально?Я бы предпочел не делать этого.
Извинения, если это очень просто!