思考过程如下:
首先要把问题做一些简单化,一般用的方法是人肉算。假定不保底抽的中奖率为X%
如果是第一抽,那么中奖率为X,不中奖率为1-X
如果是第二抽,还是没保底,中奖率为X,不中奖率为1-X
...
如果是第十抽,那么有可能要吃保底了,保底的概率是第九抽中连着9次不中的概率A以及(1 - A) * X
第九抽连着9次不中的概率A = 第八抽连着8次不中的概率B * (1 - A)
...
这样,如果学习过计算机算法的人就会发现这是一个很明显的动态规则问题。如果做一张表,看起来就是:
每N抽的连续M次不中的概率 = 第N-1抽的连续M-1次不中的抽率 * (1-X)
很明显,X与综合中奖率是正相关,对X使用二分查找,算总概率即可,完整代码如下:
public class Test {
public static void main(String[] args) {
double rate = findOriginalRate(0.15);
System.out.println(rate);
}
private static double findOriginalRate(double finalRate) {
double min = 0, max = 1, value = 0.5, rate = calculate(value);
do {
if (rate == finalRate) {
break;
}
if (rate