STL c++ algorithm
Подготовить анонимный метод gen, который бы возвращал при каждом вызове случайное число, найденное STL-механизмом генерации случайных чисел. Распределение: гауссово. Математическое ожидание: 12. Нормальное отклонение 8. случайное число должно быть типа double.Как ему задать гауссово распределение и мат. ожидание с отклонением. Снизу код на нормальное распределение для рандомных интов
auto gen = []() {
std::mt19937 rng{std::random_device()()};
std::uniform_int_distribution<int> distr(-50, 50);
return distr(rng);
};
Ответы (1 шт):
Я бы делал так -
auto gen = []() {
static std::mt19937 rng{std::random_device()()};
static std::normal_distribution<double> distr(12, 8);
return distr(rng);
};
потому что в вашем варианте генератор создается заново всякий раз, и смысла в этом нет - если random_device не является истинным случайным генератором (а он, согласно стандарту, может и не быть таковым...), окажется, что вы возвращаете все время одно и то же значение. А если истинный - то его можно использовать непосредственно, а не для зерна.