哈嘍~大家好,好久沒有更新了,也確實遇到了很多事,這篇開始恢復更新,喜歡的話,可以給個的三連,什么?你要白嫖?那可以給個免費的贊麻。
?🥇個人主頁:個人主頁?????? ? ? ? ? ? ? ?
🥈?系列專欄:【JAVASE開發】
🥉與這篇相關的文章:? ? ? ? ? ? ??
【JAVA凝氣】異常篇
【JAVA凝氣】異常篇_程序猿追的博客-CSDN博客 Java測試、反射、注解 Java測試、反射、注解_java測試類注解_程序猿追的博客-CSDN博客 【JAVASE開發】帶你零基礎學JAVA項目(學生管理系統篇) 【JAVASE開發】帶你零基礎學JAVA項目(學生管理系統篇)_程序猿追的博客-CSDN博客
目錄
一、前言
?二、效果演示
?三、具體代碼
四、到底奪少抽才能雙金?
一、前言
本篇文章將會用Java模擬原神抽卡,先說結論, 再來分析。
在?[1,73]?抽時, 每次出五星角色的概率為?0.6%?, 在?[74,90]?抽每次抽卡概率比上次高?6% 。
當獲取到五星角色時, 有?50%?概率是UP角色, 若這次五星沒有抽到UP角色, 下次五星角色必定是UP角色。五星角色保底為?90?抽, 五星UP角色保底為?180?抽。
4星物品(武器和角色)基礎概率為5.1%,包括保底的概率為13%,最多10次保底4星物品(角色或者武器)。當獲得4星物品時有50%的幾率為UP角色。
角色池抽卡概率遞增表
?二、效果演示
?
?
?三、具體代碼
public static void ou(int a) {if (a <= 10)System.out.println("\33[93;1m終極無敵至尊歐皇!!\33[0m");else if (a <= 30)System.out.println("\33[93;1m大歐皇!\33[0m");else if (a <= 50)System.out.println("\33[95;1m歐皇\33[0m");else if (a <= 70)System.out.println("\33[94;1m歐非守恒\33[0m");else if (a <= 80)System.out.println("\33[91;1m非酋\33[0m");else if (a <= 85)System.out.println("\33[91;1m大非酋!\33[0m");else if (a <= 90)System.out.println("\33[91;1m終極無敵至尊非酋王!!\33[0m");}
package com.YSCKXM;import java.util.Scanner;
import java.util.Random;public class Main {public static void main(String[] args) {Random r = new Random();Scanner sc = new Scanner(System.in);int a = 0, i = 0;int jin = 0, zi = 0, P = 0, L = 0, jinCount = 0;int ys = 0;int sum = 0;int[] logs = new int[200];while (true) {System.out.println("原石:" + ys);System.out.println("請選擇");System.out.println("A-單抽");System.out.println("B-十連");System.out.println("C-氪648");System.out.println("D-查詢抽卡記錄");System.out.println("其它-退出");char c = sc.next().charAt(0);switch (c) {case 'A':if (ys >= 160) {a = 1;ys -= 160;} else {a = -2;System.out.println("\33[91;1m原石不足,請充值!\33[0m");}break;case 'B':if (ys >= 1600) {a = 10;ys -= 1600;} else {a = -2;System.out.println("\33[91;1m原石不足,請充值!\33[0m");}break;case 'C':a = -2;ys += 6480;System.out.println("\33[92;1m充值成功!\33[0m");break;case 'D':a = -2;if (logs[0] != 0) {System.out.print("\33[96;1m抽卡記錄:\33[0m");for (i = 0; i < L; i++) {sum += logs[i];System.out.print(logs[i] + " ");}sum = sum / L;System.out.println("");System.out.println("\33[96;1m平均出金:\33[0m" + sum);ou(sum);} elseSystem.out.println("\33[37;1m暫未出金\33[0m");break;default:return;}if (a == -2) continue;for (i = 0; i < a; i++) {int num1 = r.nextInt(1000) + 1;int num2 = r.nextInt(1000) + 1;if (jin >= 89 || (num1 > 0 && num1 <= 6 && jin <= 72) || ((num1 > 0 && num1 <= 6 + (jin - 72) * 60) && jin >= 73)) {System.out.print("\33[93;1m金\33[0m ");{P = jin + 1;logs[L] = P;L++;jinCount++;jin = 0;zi++;}} else if ((zi >= 9 || (num2 >= 1 && num2 <= 51 && zi <= 7) || (num2 >= 1 && num2 <= 561 && zi == 8))) {System.out.print("\33[95;1m紫\33[0m ");zi = 0;jin++;} else {System.out.print("\33[94;1m藍\33[0m ");jin++;zi++;}}System.out.println(jin + "\33[37;1m抽未出金\33[0m");if (P != 0) {if (jinCount == 1)System.out.println("\33[96;1m第\33[0m" + P + "\33[96;1m抽出金\33[0m");else if (jinCount >= 1)System.out.println(jinCount + "\33[93;1m連金\33[0m");jinCount = 0;ou(P);P = 0;}}}}
四、到底奪少抽才能雙金?
改一個分支條件,flag 是開關, 這時我們的原石數量是無限,循環一直抽下去。
else if (jinCount >= 1 && jin == 2 && P == 10){System.out.println("第" + jinCount + "抽出了\33[93;1m連金\33[0m");jinCount = 0;P = 0;flag = 1;}
運行結果(僅供參考,具體以實際為準,反正我還沒雙金過,嗚嗚嗚)?
不積跬步無以至千里,趁年輕,使勁拼,給未來的自己一個交代!向著明天更好的自己前進吧!