Java 如何获得三个变量的确切概率?

Java 如何获得三个变量的确切概率?,java,math,distribution,Java,Math,Distribution,我正在努力计算用户获得物品的估计机会。他有15次尝试,可能会有所不同,有机会进入一组项目,然后有机会得到确切的项目。我可以看到两种方法,但没有一种是完美的。请看一看: int userTries = 15;//Variable holding number of how many tries user has to get an item double groupChance = 17;//Chance for user to get any item from the grou

我正在努力计算用户获得物品的估计机会。他有15次尝试,可能会有所不同,有机会进入一组项目,然后有机会得到确切的项目。我可以看到两种方法,但没有一种是完美的。请看一看:

    int userTries = 15;//Variable holding number of how many tries user has to get an item
    double groupChance = 17;//Chance for user to get any item from the group
    double itemChance = 80;//Chance for user to get specific item from the group

    double simpleChance = groupChance * itemChance * userTries / 100.0;

    int correctionTries = 10000;
    int totalPassed = 0;
    for (int i = 0;i < correctionTries;i++)
    {
        for (int x = 0;x < userTries;x++)
        {
            //Rnd.chance is checking if input chance was rolled, if chance is 17 then this method will return true in 17 tries out of 100
            if (Rnd.chance(groupChance))
                if (Rnd.chance(itemChance))
                {
                    totalPassed++;
                    break;
                }
        }
    }
    double iterationChance = (double) totalPassed / (double) correctionTries * 100.0;
    System.out.println("simple=" + simpleChance + " iteration=" + iterationChance);
当groupChance和itemChance的值低于1和1时,simpleChance会给出很好的结果,但当值高于17和80时,它们与迭代结果的差异很大。迭代解的问题是,当我增加一个机会时,由于计算出的机会运气不好,结果实际上会更低。我可以增加更正尝试来解决该问题,但再次计算相同的值时,机会会有所不同,这也会对性能产生重大影响

你知道有什么方法可以计算低绩效影响和良好估计的机会,但在再次计算后仍然保持不变吗?

我假设groupChance和itemChance是进入特定组并获得组中特定项目的概率,以百分比表示

如果是,那么获得该特定项目的概率为groupChance/100*itemChance/100=0.17*0.8=0.136=13.6%

不清楚simpleChance应该是什么=>以在15次尝试后至少获得一次特定项??在15次尝试后,只进行一次??连续15次得到它

如果要连续获取15次,则机会为groupChance/100*itemChance/100^userTries=0.000000000000101 如果您想在15次尝试后至少获得一次,那么机会是1-1-groupChance/100*itemChance/100^usertrys=0.88839
你的描述不清楚。什么是groupChance和itemChance?如果它们的名字表明它们是概率,为什么它们可以有像17和80这样的值?Rnd.chance做什么?你需要澄清可能的项目数量。一旦你这样做了,它就是排列和/或组合的简单应用。@meowgoesdog groupChance和itemChance是介于0和100之间的数字。它们可以是这些数字中的任何一个,例如17和80。Rnd.chance正在根据nano时间计算0到100之间的随机数。@duffymo您能告诉我您所说的可能项目数是什么意思吗?groupChance和itemChance可以是0到100之间的任意数字,UserTrys可以是1到2兆之间的任意数字。你不明白我在问什么。没有必要继续。谢谢你1-1-groupChance/100*itemChance/100^userTrie非常适合我