我有一个叫做诱饵的基类,它有一些儿童类,一些诱饵名称,假设bait1,诱饵2 ......等另一种鱼类fish1,fish2,...等等
我希望用户选择诱饵,并且对于每个诱饵,他有可能捕获某种鱼,例如。如果他选择了诱饵1,他捕获鱼的概率为40%,捕获鱼2的概率为30%,捕获鱼的概率为25%3,捕获鱼的概率为5%4,如果他选择的诱饵2与实例相同但概率不同,任何想法如何实现这个?
抱歉,我修复了上一个例子的问题答案 0 :(得分:1)
以下是使用std::discrete_distribution的诱饵1的解决方案,您可以看到实时示例here:
#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等修改这个......应该是直截了当的