用Java实现原神抽卡算法

哈喽~大家好,好久没有更新了,也确实遇到了很多事,这篇开始恢复更新,喜欢的话,可以给个的三连,什么?你要白嫖?那可以给个免费的赞麻。

 🥇个人主页:个人主页​​​​​               

🥈 系列专栏:【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);
                    } else
                        System.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;
                    }

运行结果(仅供参考,具体以实际为准,反正我还没双金过,呜呜呜) 

不积跬步无以至千里,趁年轻,使劲拼,给未来的自己一个交代!向着明天更好的自己前进吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/79052.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

信息与通信工程面试准备——数学知识|正态分布|中心极限定理

目录 正态分布 正态分布的参数 正态分布的第一个参数是均值 正态分布的第二个参数是标准差SD 所有正态分布的共同特征 标准正态分布&#xff1a;正态分布的特例 中心极限定理 理解定义 示例# 1 示例# 2 知道样本均值总是正态分布的实际含义是什么&#xff1f; 正态分…

Kafka—工作流程、如何保证消息可靠性

什么是kafka&#xff1f; 分布式事件流平台。希望不仅仅是存储数据&#xff0c;还能够数据存储、数据分析、数据集成等功能。消息队列&#xff08;把数据从一方发给另一方&#xff09;&#xff0c;消息生产好了但是消费方不一定准备好了&#xff08;读写不一致&#xff09;&am…

集简云 x 车邻邦丨实现金蝶云星辰快速集成第三方系统,实现单据自动同步

品牌故事 车邻邦成立于2009年&#xff0c;专注于汽车贴膜及美容装饰服务&#xff0c;核心业务是为高端4S店、4S集团提供汽车精品领域“产品营销施工售后”的一站式解决方案。 公司成立至今已有14年之久&#xff0c;累计服务客户数百家、累计服务车辆百万台次&#xff0c;口碑…

java 反射内存申请/浪费问题

反射字段动态get&#xff0c;内存申请/浪费 1. get() 会自动创建封装类对象&#xff0c;导致内存浪费 2. 使用基本getInt(&#xff09;方法&#xff0c;直接返回基础类型&#xff0c;内存使用低 使用反射字段&#xff0c;get动态获取字段值&#xff0c;测试内存申请情况 pub…

【SpringCloud】Stream消息通知使用

文章目录 概述标准MQ 配置POMYML 示例消息发送配置RabbitMQ可视化插件消息消费者 遇到的问题复现解决&#xff1a;修改YML注意 概述 屏蔽底层消息中间件的差异,降低切换成本&#xff0c;统一消息的编程模型 官网&#xff1a; https://spring.io/projects/spring-cloud-stream#…

怎么把pdf压缩到5m以内?压缩办法非常多

怎么把pdf压缩到5m以内&#xff1f;PDF文件是我们办公过程中较为常用的文件格式&#xff0c;PDF文件所包含的内容通常较多&#xff0c;比如文本、图像以及音视频等等。这样的话&#xff0c;PDF文件占用内存也较大。如果需要对PDF文件进行使用、传输、分享等的话&#xff0c;可能…

vue3动态组件

1 、 可以通过 shallowRef 把 可以把组件进行包裹 <template><div><el-button click"setclick(son1)">1111</el-button><el-button click"setclick(son2)">2222</el-button><el-button click"setclick(son…

leetcode473. 火柴拼正方形(回溯算法-java)

火柴拼正方形 leetcode473 火柴拼正方形题目描述回溯算法 上期经典算法 leetcode473 火柴拼正方形 难度 - 中等 原题链接 - leetcode473 火柴拼正方形 题目描述 你将得到一个整数数组 matchsticks &#xff0c;其中 matchsticks[i] 是第 i 个火柴棒的长度。你要用 所有的火柴棍…

网络协议的定义、组成和重要性?

什么是网络协议&#xff1f; 网络协议是在计算机网络中&#xff0c;用于规定通信实体之间进行数据传输和通信的规则集合。网络协议涵盖了各种通信细节&#xff0c;包括数据包格式、错误处理、数据传输速率等&#xff0c;是用于分组交换数据网络的一种协议&#xff0c;其任务仅…

item_sku-获取sku详细信息

一、接口参数说明&#xff1a; item_sku-获取sku详细信息&#xff0c;点击更多API调试&#xff0c;请移步注册API账号点击获取测试key和secret 公共参数 请求地址: https://api-gw.onebound.cn/taobao/item_sku 名称类型必须描述keyString是调用key&#xff08;点击获取测试…

使用 NLP 进行文本摘要

一、说明 文本摘要是为较长的文本文档生成简短、流畅且最重要的是准确摘要的过程。自动文本摘要背后的主要思想是能够从整个集合中找到最重要信息的一小部分&#xff0c;并以人类可读的格式呈现。随着在线文本数据的增长&#xff0c;自动文本摘要方法可能会非常有用&#xff0c…

QT的设计器介绍

设计器介绍 Qt制作 UI 界面&#xff0c;一般可以通过UI制作工具QtDesigner和纯代码编写两种方式来实现。纯代码实现暂时在这里不阐述了在后续布局章节详细说明&#xff0c;QtDesigner已经继承到开发环境中&#xff0c;在工程中直接双击ui文件就可以直接在QtDesigner设计器中打…

C语言:每日一练(选择+编程)

目录 选择题&#xff1a; 题一&#xff1a; 题二&#xff1a; 题三&#xff1a; 题四&#xff1a; 题五&#xff1a; 编程题&#xff1a; 题一&#xff1a;打印1到最大的n位数 示例1 思路一&#xff1a; 题二&#xff1a;计算日期到天数转换 示例1 思路一&#xf…

【后端面经-数据库】Redis详解——Redis基本概念和特点

【后端面经-数据库】Redis详解——Redis基本概念和特点 1. Redis基本概念2. Redis特点2.1 优点2.2 缺点 3. Redis的应用场景面试模拟参考资料 声明&#xff1a;Redis的相关知识是面试的一大热门知识点&#xff0c;同时也是一个庞大的体系&#xff0c;所涉及的知识点非常多&…

HttpClint 项目中使用

大家好 , 我是苏麟 , 今天带来一个HTTP通信库 HttpClient . HttpClient是Apache Jakarta Common 下的子项目&#xff0c;可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包 . HttpClient的功能包括但不限于 1.模拟浏览器发送HTTP请求&#xff0c;发送…

变形金刚在图像识别方面比CNN更好吗?

链接到文 — https://arxiv.org/pdf/2010.11929.pdf 术语说明&#xff1a; 1&#xff09;transformer&#xff1a;对应的汉译是”转换器、变形金刚、变压器“等&#xff0c;文中见到类似语句一律理解为transformers。 2&#xff09;ViT&#xff1a;是 VISION TRANSFORMER 的…

实现动画的连续展示 JAVA

目录 1、前言&#xff1a;2、图片的展示以及自动关闭&#xff1a;3、动画的连续展示&#xff1a; 1、前言&#xff1a; 要实现动画的流畅展示需要在能展示图片的基础上对图片进行关闭&#xff0c;再切换下一张图片&#xff0c;这要关闭窗口&#xff0c;与延时函数以及while函数…

SpringBoot案例-部门管理-根据id查询

目录 根据页面原型&#xff0c;明确需求 查看接口文档 思路分析 接口功能实现 控制层&#xff08;Controller类&#xff09; 业务层&#xff08;Service类&#xff09; 业务类 业务实现类 持久层&#xff08;Mapper类&#xff09; 接口测试 前后端联调 根据页面原型&…

前端性能优化——包体积压缩插件,打包速度提升插件,提升浏览器响应的速率模式

前端代码优化 –其他的优化可以具体在网上搜索 压缩项目打包后的体积大小、提升打包速度&#xff0c;是前端性能优化中非常重要的环节&#xff0c;结合工作中的实践总结&#xff0c;梳理出一些 常规且有效 的性能优化建议 ue 项目可以通过添加–report命令&#xff1a; "…

开发过程中自己遇到的异常(四)

mysql 报错&#xff1a;‘Lost connection to MySQL server during query 出现这种情况大多是因为&#xff0c;两个事物抢一个表的使用权造成的。 show processlist; 观察Command 列&#xff0c;有明显的update&#xff0c;insert, delete 时间比较久的&#xff0c;直接kill掉…