如何使随机选择比其他选择更少?

时间:2016-03-15 21:12:27

标签: python-2.7 random

我想制作一个基于文本的游戏,你可以在python中挖掘矿石和宝石,我想让它随机选择当你输入“我的”时你得到的东西,你怎么样?这样一些随机选择比另一个更稀有吗?

这是我目前的代码:`

part

2 个答案:

答案 0 :(得分:0)

class Label
{
private:
    std::string text;
    int color;

public:
    Label(string text, string color);
    ~Label();

    // display the label on the `canvas`
    void display(Canvas* canvas);
};

您可以使用numpy的选择功能。看看probability_distribution是一个与矿石顺序相同的序列。

答案 1 :(得分:0)

如果您不想使用除已有的进口产品以外的其他任何产品,那么简单的解决方案就是通过以下方式替换矿石:

    ores = ["emerald"]*3+["ruby"]*7+["silver"]*10+["gold"]*20+["diamods"]*20+["nothing"]*40

,乘数越大,项目越少。然而,这不是一个好的解决方案。建立一个函数可以更好地解决分布问题:

    dist = [3,10,20,40,60,100]
    ores = ["emerald", "ruby", "silver", "gold", "diamods", "nothing"]

,你可以生成一个随机整数并检索正确的项目:

    for i in range(1,len(ores)):
            r = random.randint(0,100)
            if dist[i-1]<=r<dist[i]:
                    break
    print "you found %s!" % ores[i]

显然,如果您愿意使用像numpy这样的库,那么您将获得性能提升。