原神官方给的概率:

5星基础:0.6%,5星保底:1.6%,90抽5星保底;

        4星基础:5.1%,4星保底:13%,10抽4星保底。

一开始我也想着直接用官方给的概率设置直接写入,但发现第90发才出金的概率占比实在太大,但凡玩过原神的都知道一般都是七八十发出金,到90发才出金的人我属实没见过,所以我在概率上进行了调整,75发后如果还没出金将逐步提升出金概率(我设置的为3%)。

设计的概率:

5星角色基础概率:0.6%,有50%为本期up角色,50%为常驻角色,当出常驻角色后下一次五星必为本期up角色,75抽未出后逐步提升五星概率(3%),90抽5星保底 ;
        4星基础概率:5.1%,有50%为本期up四星角色,50%为其他四星,当出其他四星后下一次四星星必为本期up角色,10抽4星保底。

运行起来如下:

出金的时候:

四星没设计查询,五星可以查询:

全部代码:

import java.util.Random;
import java.util.Scanner;public class Chouka_puls {private static String[] sanxingwuqi = new String[] { "弹弓", "神射手之誓", "鸦羽弓", "翡玉法球", "讨龙英杰谭", "魔导绪论", "黑缨枪", "以理服人","沐浴龙血的剑", "铁影阔剑", "飞天御剑", "黎明神剑", "冷刃" }; // 三星武器private static String[] sixingwuqi = new String[] { "弓藏", "祭礼弓", "绝弦", "西风猎弓", "昭心", "祭礼残章", "流浪乐章", "西风秘典", "西风长枪","匣里灭辰", "雨裁", "祭礼大剑", "钟剑", "西风大剑", "匣里龙吟", "祭礼剑", "笛剑", "西风剑" }; // 四星武器private static String[] sixingjuese = new String[] { "辛焱", "砂糖", "重云", "诺艾尔", "班尼特", "凝光", "行秋", "北斗", "云堇","香菱", "安柏", "雷泽", "凯亚", "芭芭拉", "丽莎", "罗莎莉亚", "早柚", "九条裟罗" };// 四星角色(去除up四星角色)private static String[] wuxingjuese = new String[] { "霆霓快雨:刻晴", "星天水镜:莫娜", "冻冻回魂夜:七七","晨曦的暗面:迪卢克", "蒲公英骑士:琴" }; // 五星角色private static String[] upsixingjuese = new String[] { "菲谢尔", "托马", "迪奥娜" };// up四星角色private static String upwuxingjuese = "浮世笑百姿:八重神子"; // up五星角色static int dabaodi = 90; // 设置五星保底数量,默认为90static int xiaobaodi = 10; // 设置四星保底数量,默认为10static int WX[] = new int[1000];// 用来保存抽到的五星static int WXNUM = 0;// 用来为保存五星数组计数,默认为零static int sum = 0;// 设置抽卡的次数,默认为零static int snum = 0;// 设置计算平均数量的基数,默认为零static int sixingnum = 0, wuxingnum = 0;// 设置没有抽到四星与五星的次数,默认为零static int SXNUM = 0;// 设置抽到的四星数量,默认为零static int sxbd = 0, wxbd = 0;// 设置抽到非up角色的参数,默认为零public static void main(String[] args) {System.out.println("*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*");System.out.println("\t\t欢迎使用原神抽卡模拟器2.0" + "\n" + "模拟器概率公示:");System.out.println("5星角色基础概率:0.6%,有50%为本期up角色,50%为常驻角色");System.out.println("当出常驻角色后下一次五星必为本期up角色");System.out.println("4星基础概率:5.1%,有50%为本期up四星角色,50%为其他四星");System.out.println("当出其他四星后下一次四星星必为本期up角色");System.out.println("五星保底:90抽,四星保底:10抽,75抽未出后逐步提升五星概率");System.out.println("\t\t\t2022.3.1 痛忆思非");System.out.println("*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*");chou();}static void chou() {int x;do {menu();Scanner in = new Scanner(System.in);x = in.nextInt();if (x == -1) {Chaxun();// -1查询} else if (x == -2) {Reset();// -2重置数据} else if (x > 0) // 抽卡概率主体部分{for (int i = 0; i < x; i++) {if (wuxingnum >= 90)// 五星保底{if (wxbd > 0) {upjuese();wxbd = 0;} else if (Probability((float) 50)) {upjuese();wxbd = 0;} else {wuxingrw();wxbd++;}sixingnum++;wuxingnum = 0;snum = sum;} else if (sixingnum >= 9)// 四星保底{if (sxbd > 0) {upsixingrw();sxbd = 0;} else if (Probability((float) 50)) {upsixingrw();sxbd = 0;} else {if (Probability((float) 50)) {sixingrw();} else {sixingwq();}sxbd++;}wuxingnum++;SXNUM++;sixingnum = 0;} else if (wuxingnum >= 75 && wuxingchouka()) //大于75发时抽到五星{if (wxbd > 0) {upjuese();wxbd = 0;} else if (Probability((float) 50)) {upjuese();wxbd = 0;} else {wuxingrw();wxbd++;}sixingnum++;wuxingnum = 0;snum = sum;} else if (Probability((float) 0.6) && wuxingnum < 75)// 小于75抽时抽到五星{if (wxbd > 0) {upjuese();wxbd = 0;} else if (Probability((float) 50)) {upjuese();wxbd = 0;} else {wuxingrw();wxbd++;}sixingnum++;wuxingnum = 0;snum = sum;} else if (Probability((float) 5.1))// 抽到四星{if (sxbd > 0) {upsixingrw();sxbd = 0;} else if (Probability((float) 50)) {upsixingrw();sxbd = 0;} else {if (Probability((float) 50)) {sixingrw();} else {sixingwq();}sxbd++;}wuxingnum++;SXNUM++;sixingnum = 0;} else // 抽到三星{sanxingwq();sixingnum++;wuxingnum++;}sum++;}} else {System.out.println("输入错误请重新输入!");}} while (x != 0);}static boolean Probability(Float x)// 一个概率函数{x = x * 1000;Random rand = new Random();int y = rand.nextInt(100000);if (y < x)return true;elsereturn false;}static void menu() // 菜单{System.out.println("***********************************************");if (sum > 0) {System.out.println("抽卡总数:" + sum + "\t" + "四星数量:" + SXNUM + "\t" + "五星数量:" + WXNUM);if (snum > 0) {System.out.println("平均" + snum / WXNUM + "抽一个金");}}System.out.println("请输入你抽卡的次数:(0退出,-1查询,-2重置数据)");System.out.println("***********************************************");}static void Chaxun()// 查询抽到的五星{int n = 0;// 换行标志if (WXNUM == 0) {System.out.println("未查询到数据!");} else {for (int i = 0; i < WXNUM; i++) {if (WX[i] == 101) {System.out.print(upwuxingjuese + "\t\t");n++;} else {System.out.print(wuxingjuese[WX[i]] + "\t\t");n++;}if (n >= 2) {System.out.println();n = 0;}}System.out.println();}}static void Reset()// 重置数据{WXNUM = 0;SXNUM = 0;sum = 0;sixingnum = 0;wuxingnum = 0;sxbd = 0;wxbd = 0;}static boolean wuxingchouka() // 超过75抽抽取五星概率{int m = 3;// 超过75抽每次增加的概率float x = (float) ((wuxingnum - 75) * m + 0.6);if (Probability(x)) {return true;} elsereturn false;}static void sanxingwq()// 三星武器{Random rand = new Random();int y = rand.nextInt(sanxingwuqi.length);System.out.println("三星武器 *** " + sanxingwuqi[y]);}static void sixingwq() // 四星武器{Random rand = new Random();int y = rand.nextInt(sixingwuqi.length);System.out.println("四星武器  ****  " + sixingwuqi[y]);}static void upsixingrw()// up四星人物{Random rand = new Random();int y = rand.nextInt(upsixingjuese.length);System.out.println("四星角色 ****  " + upsixingjuese[y]);}static void sixingrw()// 歪到的四星人物{Random rand = new Random();int y = rand.nextInt(sixingjuese.length);System.out.println("四星角色 ****  " + sixingjuese[y]);}static void wuxingrw()// 歪到的五星人物{Random rand = new Random();int y = rand.nextInt(wuxingjuese.length);System.out.println("\n" + "五星角色  *****   " + wuxingjuese[y] + "\n");WX[WXNUM] = y;WXNUM++;}static void upjuese()// 五星up角色{System.out.println("\n" + "五星角色  *****   " + upwuxingjuese + "\n");WX[WXNUM] = 101;WXNUM++;}}

java原神抽卡器(可查询版本)相关推荐

  1. 我用java分析了原神抽卡记录

    起因 我们都知道原神抽卡是有保底机制的,但是游戏里面只能按页查看抽卡记录,并没有各种数据统计,为了能够优化大家的游戏体验,本文就带大家用java爬虫来获取抽卡信息. 抽卡信息api解析 由于我用的是安 ...

  2. 原神抽卡模拟器(java简易版)

    原神抽卡机制 单抽概率: 5★物品:0.6% 4★物品:5.1% 保底机制: 5★保底:如果连续89发没出5星,第90抽必定5星,然后重新计数 4★保底:如果连续9发没出4星,第10抽触发4星保底:0 ...

  3. java 做的原神抽卡模拟小程序

    java做的原神抽卡模拟小程序 难度不大,适合学完面向对象后做着玩. import java.util.ArrayList; import java.util.Calendar; import jav ...

  4. 原神抽卡模拟器,unity制作(由于没有获得作者的视频授权,不会发布软件,只展示算法与开发等,效果图在个人主页类有资源下载,不会上传视频)

    五星效果图 以上为展示,没做优化 using System.Collections; using System.Collections.Generic; using UnityEngine; usin ...

  5. Python实现原神抽卡,生成桌面程序,tkinter

    这里写自定义目录标题 话不多说,直接贴所有代码 运行效果 需要用到的两张图片 话不多说,直接贴所有代码 import random import sys import tkinter as tk # ...

  6. JAVA编译一个原神抽卡模拟器

    import java.util.Random;import java.util.Scanner;public class Chouka {final static String[] sanxingw ...

  7. 原神抽卡模拟简单代码(概率还原)

    代码如下: import java.util.Scanner; import java.util.Random;public class Main {public static void main(S ...

  8. 面向对象实现原神抽卡模拟功能

    主要涉及JAVA面向对象编程 [注:这里只完善了SSR部分] 最近学习Java正好学到了面向对象部分,想着觉得可以用来做个伪随机抽卡模拟功能,于是就做了,本人是萌新,代码结构设计很拉跨,所以花费了近两 ...

  9. 原神抽卡(题目出自:江西软件职业技术大学)

    描述: 在终于熬过了高中之后,你进入了大学,你听信了大人们的谎言,上了大学就轻松了,实际上你发现大学比高中更卷了.但是!你已经佛系了起来,凭借着高中学过oi,在大学开始了摸鱼,而一直打LOL的你,最近 ...

最新文章

  1. 思考如何提高博客的访问量
  2. spring之旅第四篇-注解配置详解
  3. 移动端— position: fixed;固定定位解决方案
  4. 微信支付代金券开发包分享
  5. 【arduino】pro mini程序下载器接线方法,arduino pro mini 与nodemcu通信方案
  6. Win10 OpenCV3.3.0+VS2013配置大坑,OpenCV解决方案编译报错“找不到python36_d.lib”错误...
  7. 阿里技术专家玄惭回忆:我是如何自学技术拿到阿里offer
  8. 一个项目如何编译多个不同签名、包名、资源等,的apk?
  9. 【译】Matplotlib:plotting
  10. POSTGRESQL通过身份证号码筛选年龄的两种方式
  11. 计算机团队霸气名称大全,最霸气最潮的团队名字
  12. html各类表格制作,HTML:复杂表格制作
  13. 每日英语:China Bridge Collapse Raises Infrastructure Concerns
  14. XILINX FPGA 7系之 Distribute RAM
  15. 「Python 网络自动化」Nornir—— Inventory(主机清单)介绍
  16. 与通用计算机相比较 单片机优势在哪,单片机原理与嵌入式系统-中国大学mooc-题库零氪...
  17. STEP 7-MicroWIN SMART软件在打开时报错“软件停止”以及界面显示“???”的解决办法
  18. 全球24个时区的划分
  19. glb转obj文件及构建简单obj文件
  20. 第二讲:认识颜色符号或绘图函数

热门文章

  1. 沧海一粟小组(第三次作业)
  2. 11月云短信报告出炉,腾讯云再次蝉联到达率冠军
  3. 那些在2009年失意的互联网“伟人”
  4. 分析《大话数据结构》
  5. Netty是什么?Netty的优势
  6. 求求求求求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,来我这里就对了!
  7. android 商城评价,打开应用商店对应用进行评价
  8. 搜狗浏览器或者360浏览器安装chrome 浏览器插件
  9. 求日版KPW2的内核文件main_kernel.img和diags_kernel.img
  10. java 2%3等于多少,Java别说取余(%)运算简单你真的会吗