Java 如何获得三个变量的确切概率?
我正在努力计算用户获得物品的估计机会。他有15次尝试,可能会有所不同,有机会进入一组项目,然后有机会得到确切的项目。我可以看到两种方法,但没有一种是完美的。请看一看: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
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非常适合我