Есть несколько функций, и меняющиеся шансы для их вызова:
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.
Какой здесь нужен алгоритм? Спасибо!
Ответ
Задача может решаться с помощью стандартного шаблона распределения std::discrete_distribution
std::discrete_distribution<> dist({ список вероятностей });
std::cout << dist(генератор);
Пример использования:
#include
Комментариев нет:
Отправить комментарий