#cpp #алгоритм #случайные_числа
Есть несколько функций, и меняющиеся шансы для их вызова:
void a() { }
void b() { }
void c() { }
float aChance = 0.3f;
float bChance = 0.1f;
float cChance = 0.6f;
Я понимаю, что нужно сгенерировать шанс (0.0f - 1.0f) и сравнить с aChance, bChance
и cChance. Но тогда, если шансы двух переменных одинаковы, вызываться будет та функция,
которая первой стоит в if-else if-else.
Какой здесь нужен алгоритм? Спасибо!
Ответы
Ответ 1
Задача может решаться с помощью стандартного шаблона распределения std::discrete_distribution:
std::discrete_distribution<> dist({ список вероятностей });
std::cout << dist(генератор);
Пример использования:
#include
#include
#include
Комментариев нет:
Отправить комментарий