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

请用java代码实现以下算法:在抽奖未触发大保底机制时,每抽一发有p/2的概率抽到当期5星,有p/2的概率抽到常驻5星,其余的1一p概率不出5星。当抽到常驻5星后,触发了大保底机制,以后每抽一发有p的概率抽到当期5星,其余的1-p概率不出5星。 另外,当连续89抽未出5星时,下一抽必出5星。也就是说,若未触发大保底机制,本次抽卡1/2概率抽到当期5星,有1/2的概率抽到常驻5星;若已触发了大保底机制,则100%概率抽到当期5星。 现在给定了抽中5星的概率p。米小游想要抽到一张当期5星卡,她想知道抽卡次数的

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

点击这里,进行内容创作

创作工场 免责声明:
以上内容除特别注明外均来源于网友提问,创作工场回答,未经许可,严谨转载。
点击这里>>使用🔥专业版,更聪明、更完整、更原创!

上一篇 C++代码在未触发大保底机制时,每抽一发有p/2的概率抽到当期5星,有p/2的概率抽到常驻5星,其余的1一p概率不出5星。当抽到常驻5星后,触发了大保底机制,以后每抽一发有p的概率抽到当期5星,其余的1-p概率不出5星。 另外,当连续89抽未出5星时,下一抽必出5星。也就是说,若未触发大保底机制,本次抽卡1/2概率抽到当期5星,有1/2的概率抽到常驻5星;若已触发了大保底机制,则100%概率抽到当期5星。 现在给定了抽中5星的概率p。米小游想要抽到一张当期5星卡,她想知道抽卡次数的期望是多少? 输入描述 下一篇 新质能源800字论文