美文网首页
用Java模拟原神抽卡概率算法

用Java模拟原神抽卡概率算法

作者: CuteMei | 来源:发表于2023-03-22 17:18 被阅读0次
    import java.util.Random;
    
    public class GenshinImpactGacha {
        public static void main(String[] args) {
            int totalAttempts = 90; // 总共尝试次数
            int pityCounter = 0; // 保底计数器
            int fiveStarCount = 0; // 五星角色数量
            int fourStarCount = 0; // 四星角色数量
    
            for (int i = 0; i < totalAttempts; i++) {
                int rollResult = roll(); // 抽卡
                if (rollResult == 5) { // 抽到五星
                    fiveStarCount++;
                    pityCounter = 0;
                } else if (rollResult == 4) { // 抽到四星
                    fourStarCount++;
                    pityCounter++;
                    if (pityCounter >= 10) { // 触发保底
                        fiveStarCount++;
                        pityCounter = 0;
                    }
                } else { // 抽到三星或以下
                    pityCounter++;
                    if (pityCounter >= 90) { // 触发保底
                        fiveStarCount++;
                        pityCounter = 0;
                    }
                }
            }
    
            double fiveStarRate = (double) fiveStarCount / totalAttempts * 100; // 计算五星概率
            double fourStarRate = (double) fourStarCount / totalAttempts * 100; // 计算四星概率
    
            System.out.printf("在%d次抽卡中,抽到了%d个五星角色,五星概率为%.2f%%。%n", 
                                totalAttempts, fiveStarCount, fiveStarRate);
            System.out.printf("在%d次抽卡中,抽到了%d个四星角色,四星概率为%.2f%%。%n", 
                                totalAttempts, fourStarCount, fourStarRate);
        }
    
        public static int roll() {
            Random rand = new Random();
            int randomNumber = rand.nextInt(1000) + 1; // 随机生成1-1000的整数
            if (randomNumber <= 6) { // 0.6%的概率抽到五星
                return 5;
            } else if (randomNumber <= 56) { // 5%的概率抽到四星
                return 4;
            } else { // 剩下的概率抽到三星或以下
                return 3;
            }
        }
    }
    

    该示例代码模拟了在90次抽卡中,抽到五星和四星角色的概率。其中,模拟了游戏中的保底机制:如果累计抽到了10个四星(或以上)角色,那么在接下来的一次抽卡中必定会抽到五星角色;如果累计抽到了90次抽卡但都没有抽到五星,则在第90次抽卡中必定会抽到五星角色。最终,代码运行结果输出了抽到五星和四星角色的概率。

    相关文章

      网友评论

          本文标题:用Java模拟原神抽卡概率算法

          本文链接:https://www.haomeiwen.com/subject/czhbrdtx.html