aiaiask.com©

开花即结果 提问即答案

用Java实现抽奖算法:计算抽到当期5星卡所需次数
原始问题:

用Java实现抽奖算法:计算抽到当期5星卡所需次数

以下是使用Java代码实现上述算法的示例:

import java.util.Random;

public class GachaAlgorithm {
    public static void main(String[] args) {
        double p = 0.5; // 抽中5星的概率p
        int count = simulateGacha(p);
        System.out.println("抽卡次数:" + count);
    }

    public static int simulateGacha(double p) {
        Random random = new Random();
        int count = 0;
        boolean isGrandGuaranteeTriggered = false; // 大保底机制是否触发

        while (true) {
            count++;

            if (count == 90) {
                return count; // 连续89抽未出5星,下一抽必出5星
            }

            if (isGrandGuaranteeTriggered) {
                if (random.nextDouble() < p) {
                    return count; // 已触发大保底机制,100%概率抽到当期5星
                }
            } else {
                double randomValue = random.nextDouble();
                if (randomValue < p / 2) {
                    return count; // 1/2概率抽到当期5星
                } else if (randomValue < p) {
                    isGrandGuaranteeTriggered = true; // 触发大保底机制
                }
            }
        }
    }
}

这段代码模拟了抽卡的过程,使用了Random类生成随机数来模拟抽卡的概率。simulateGacha方法接受一个概率值p作为参数,返回抽卡次数。

在循环中,首先判断是否已经连续89抽未出5星,如果是,则返回当前抽卡次数。然后根据是否触发了大保底机制来确定抽卡的逻辑。如果已触发大保底机制,则以概率p抽到当期5星;否则,以概率p/2抽到当期5星,以概率p/2抽到常驻5星,以概率1-p不出5星。

最后,输出抽卡次数即可得到答案。

用Java实现抽奖算法:计算抽到当期5星卡所需次数
https://www.aiaiask.com/ask/44507.html
AI / 模型DeepSeek
时间 / DATEAugust 13, 2023, 9:35 PM
语言zh-CN
IP / 区域江苏 南京