0

我有一个名为 bait 的基类,它有一些 bait 名称的子类,假设 bait1、bait2...等,另一个鱼类 fish1、fish2、...等

我希望用户选择一个诱饵,并且对于每个诱饵,他都有可能钓到某种鱼,例如。如果他选择诱饵1,则有40%的概率他钓到鱼1,有30%的概率钓到鱼2,有25%的概率钓到鱼3,有5%的概率钓到鱼4,如果他选择诱饵2,与示例相同但概率不同,知道如何实现吗?

抱歉,我用前面的例子解决了这个问题

4

1 回答 1

1

这是使用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等修改这个......应该是直截了当的

于 2013-12-17T20:47:33.363 回答