Выбор объекта случайно на основе другого объекта и вероятности?

У меня есть базовый класс, называемый «приманка», в котором у дочерних классов есть несколько имен приманок, предположим, что «приманка1», «приманка 2» и т. Д. И другие классы рыб «fish1», «fish2», … и т. Д.

Я хочу, чтобы пользователь выбрал приманку, и для каждой приманки есть вероятность, что он ловит определенную рыбу, например. если он выбрал приманку1, есть вероятность 40%, что он ловит рыбу1, и вероятность 30%, что он ловит рыбу2, и вероятность 25%, что он ловит рыбу3, и вероятность 5%, что он ловит рыбу4, и если он выбирает приманку2 так же, как в примере, но с разными вероятностями Любая идея, как это реализовать?

извините я исправил проблему с предыдущим примером

1

Решение

Вот решение для использования приманки 1 станд :: discrete_distribution, вы можете увидеть живой пример Вот:

#include <iostream>
#include <map>
#include <random>

int main()
{
std::random_device rd;
std::mt19937 gen(rd());
std::discrete_distribution<> bait1({40,30,25,5});
std::map<int, int> m;
for(int n=0; n<10000; ++n) {
++m[bait1(gen)];
}
for(auto p : m) {
std::cout << "fish " <<  (p.first+1) << " generated " << p.second << " times\n";
}
}

образец вывода:

fish 1 generated 3964 times
fish 2 generated 2981 times
fish 3 generated 2544 times
fish 4 generated 511 times

изменить это для приманки 2 и т.д … должно быть прямо

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]