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次抽卡中必定会抽到五星角色。最终,代码运行结果输出了抽到五星和四星角色的概率。
网友评论