我有一个名为 bait 的基类,它有一些 bait 名称的子类,假设 bait1、bait2...等,另一个鱼类 fish1、fish2、...等
我希望用户选择一个诱饵,并且对于每个诱饵,他都有可能钓到某种鱼,例如。如果他选择诱饵1,则有40%的概率他钓到鱼1,有30%的概率钓到鱼2,有25%的概率钓到鱼3,有5%的概率钓到鱼4,如果他选择诱饵2,与示例相同但概率不同,知道如何实现吗?
抱歉,我用前面的例子解决了这个问题
我有一个名为 bait 的基类,它有一些 bait 名称的子类,假设 bait1、bait2...等,另一个鱼类 fish1、fish2、...等
我希望用户选择一个诱饵,并且对于每个诱饵,他都有可能钓到某种鱼,例如。如果他选择诱饵1,则有40%的概率他钓到鱼1,有30%的概率钓到鱼2,有25%的概率钓到鱼3,有5%的概率钓到鱼4,如果他选择诱饵2,与示例相同但概率不同,知道如何实现吗?
抱歉,我用前面的例子解决了这个问题
这是使用std::discrete_distribution的诱饵 1 的解决方案,您可以在此处查看实时示例:
#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等修改这个......应该是直截了当的