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 шт):

Автор решения: Harry

Я бы делал так -

auto gen = []() {
    static std::mt19937 rng{std::random_device()()};
    static std::normal_distribution<double> distr(12, 8);
    return distr(rng);
};

потому что в вашем варианте генератор создается заново всякий раз, и смысла в этом нет - если random_device не является истинным случайным генератором (а он, согласно стандарту, может и не быть таковым...), окажется, что вы возвращаете все время одно и то же значение. А если истинный - то его можно использовать непосредственно, а не для зерна.

→ Ссылка