我在Java中使用这段代码正确计算概率了吗?

我在Java中使用这段代码正确计算概率了吗?,java,probability,Java,Probability,我试图计算一项投资在给定的时期数后返回正数的总概率。我已经有一段时间没做概率了,所以我真的记不太清楚了。我做得对吗?我得到的数字相当低 double totalProbPos = 1; for (int i = 0; i < maxPeriods; i++) { totalProbPos *= (probPos / 100); } totalProbPos = round(totalProbPos); System.out.println("\nThe probability th

我试图计算一项投资在给定的时期数后返回正数的总概率。我已经有一段时间没做概率了,所以我真的记不太清楚了。我做得对吗?我得到的数字相当低

double totalProbPos = 1;
for (int i = 0; i < maxPeriods; i++) {
    totalProbPos *= (probPos / 100);
}
totalProbPos = round(totalProbPos);
System.out.println("\nThe probability that your investment will return positive after " + maxPeriods + " periods is: \n    " + totalProbPos + "%.");
double totalProbPos=1;
对于(int i=0;i
其中:
maxPeriods,probPos
由用户给定

totalProbPos *= (probPos / 100);
最好将其中一个操作数强制转换为双精度以避免问题(假设您关心小数点)


我猜想(重点是“猜测”),解决这个问题的方法是尝试推导出最终投资回报的概率分布。然后你只需要找到收益大于零的概率(即概率密度从0到无穷大的积分)。结束时收益的概率分布可能类似于高斯(正态)分布,也可能是离散状态的分布,如马尔可夫链所示。也许原始的问题陈述中有一些信息可以帮助您确定该怎么做。

您确定它不是
*=1-probPos/100.0
?您也可以跳过循环,只计算
double totalProbPos=(1-probPos/100.0)^maxPeriods
。您可以在wiki@Blender我刚刚试过
Math.pow((1-probPos/100),maxPeriods)但现在它甚至更低。我使用
probPos=54进行测试
现在我得到了0.002004%的结果,这是不对的,因为当我运行模拟时,我得到的正的次数比那多了很多。@Xzar:我不太知道投资是如何处理概率的,所以你要么做
total=1-prob^trials
要么做
total=1-(1-prob)^trials
,如果我没记错的话。@Blender为什么要从1中减去
(1-prob)^trials
totalProbPos *= ((double)probPos / 100);