qcode
  • 创作工场专业版,一问多答!更智能、更完整、更原创
  • 这是一个超强内容创作平台,它会写文章、做设计、绘图、敲代码,有问必答!
🔥点击使用-免登录深度版🔥

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

时间2023-08-13 21:35:56 提问来自 江苏省南京市 的网友 分类创作 浏览388
以下是使用Java代码实现上述算法的示例: ```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星。 最后,输出抽卡次数即可得到答案。

不满意?免费深度重写!

免责声明:
以上内容除特别注明外均来源于网友提问,创作工场回答,未经许可,严谨转载。

上一篇 米小游抽当期5星卡期望次数计算方法 下一篇 建设教育强国的青年力 量