用Java实现原神抽卡算法

news2024/11/22 16:23:46

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

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

🥈 系列专栏:【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.coloradmin.cn/o/892937.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Android DataStore:安全存储和轻松管理数据

关于作者&#xff1a;CSDN内容合伙人、技术专家&#xff0c; 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 &#xff0c;擅长java后端、移动开发、人工智能等&#xff0c;希望大家多多支持。 目录 一、导读二、概览三、使用3.1 Preferences DataStore添加依赖数据读…

深度解析 Llama 2 的资源汇总:不容错过

“ 探索 Llama 2 背后的过程&#xff0c;包括了模型的全面解析&#xff0c;在线体验&#xff0c;微调&#xff0c;部署等&#xff0c;这份资源汇总将带您深入了解其内涵。” 01 — 周二发布了文章《中文大模型 Chinese-LLaMA-Alpaca-2 开源且可以商用》后&#xff0c;不少朋友们…

【Unity小技巧】Unity自制对象池和官方内置对象池的使用

文章目录 前言不使用对象池使用官方内置对象池应用 自制对象池总结源码参考完结 前言 发明对象池的人绝对是个天才&#xff0c;游戏中我们常常会遇到&#xff0c;频繁创建和销毁大量相同对象的场景&#xff0c;例如敌人子弹 如果我们不做任何处理&#xff0c;只是单纯的创建…

(stm32)低功耗模式

低功耗模式 执行哪个低功耗模式的程序判断流程 标志位设置操作一定要在WFI/WFE之前&#xff0c;调用此指令后立即进入睡眠判断流程 模式对比 睡眠模式 停止模式 待机模式

“绿心之眼”串联起“三大建筑”

本报记者 赵鹏 实习记者 池阳 通讯员 董浩程 步入夏末秋初的城市绿心森林公园&#xff0c;远远便看到在“三大建筑”间有块地面已悄然隆起&#xff0c;如同破土“种子”般正加速“萌发”。这枚生命之“种”泛着钢铁的颜色&#xff0c;一根根钢管编织起来&#xff0c;用叶脉的纹…

c语言每日一练(9)

前言&#xff1a;每日一练系列&#xff0c;每一期都包含5道选择题&#xff0c;2道编程题&#xff0c;博主会尽可能详细地进行讲解&#xff0c;令初学者也能听的清晰。每日一练系列会持续更新&#xff0c;暑假时三天之内必有一更&#xff0c;到了开学之后&#xff0c;将看学业情…

定位服务器CPU爆满的具体原因

1、查询CPU消耗的进程 使用top命令查看系统的CPU和内存使用情况 CPU一列是线程占用百分比 2、具体查看某个占分比大的进程 以为PId:7355为例&#xff0c; 执行top -Hp 7355&#xff0c;线程按照CPU使用率排序。 3、将线程PID转化为16进制 执行printf %x 7391&#xff0c;将…

三维模型OSGB格式轻量化重难点分析

三维模型OSGB格式轻量化重难点分析 在三维模型应用中&#xff0c;为了适应移动设备的硬件和网络限制等问题&#xff0c;OSGB格式轻量化处理已经成为一个重要的技术手段。但是&#xff0c;在实际应用中&#xff0c;OSGB格式轻量化仍然存在着一些重难点问题。下面将对这些问题进行…

视频云存储/安防监控/视频汇聚EasyCVR平台新增设备经纬度选取

视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同&#xff0c;支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。音视频流媒体视频平台EasyCVR拓展性强&#xff0c;视频能力丰富&#xff0c;具体可实现视频监控直播、视频轮播、视频录像、…

Spring Clould 部署 - Docker

视频地址&#xff1a;微服务&#xff08;SpringCloudRabbitMQDockerRedis搜索分布式&#xff09; 初识Docker-什么是Docker&#xff08;P42&#xff0c;P43&#xff09; 微服务虽然具备各种各样的优势&#xff0c;但服务的拆分通用给部署带来了很大的麻烦。 分布式系统中&…

两个案例熟悉String的基本操作

1、第一个案例 Java语言规范要求完全相同的字符串字面量&#xff0c;应该包含同样的Unicode字符序列&#xff08;包含同一份码点序列的常量&#xff09;&#xff0c;并且必须是指向同一个String类实例。 package string; public class StringTest4 {public static void main(St…

【3Ds Max】挤出命令的简单使用(实现二维变三维)

简介 在3ds Max中&#xff0c;"挤出"&#xff08;Extrude&#xff09;是一种常用的建模操作&#xff0c;用于在平面或曲面上创建立体几何形状。以下是使用3ds Max中的挤出命令的基本步骤&#xff1a; 创建基本几何形状&#xff1a; 在3ds Max中创建一个基本的几何形…

免费开源的vue+express搭建的后台管理系统

此项目已开源 前端git地址&#xff1a;exp后台管理系统前端: exp后台管理系统前端 后端git地址&#xff1a;express后台管理系统: express后台管理系统 安装运行 npm i yarn i 前端: npm run dev | yarn dev 后端: npm run start | yarn start 主要技术栈 前端后端名称版本名…

Ant Design Pro 前端脚手架 配置混合导航

Ant Design Pro脚手架 点击查看阅读 混合导航&#xff1a; 顶部导航和侧边栏导航实现联动效果&#xff0c;点击不同的顶部导航按钮会显示对应的子菜单项。 实现点&#xff1a; 1. 路由的配置 菜单展示 我们可以在 route 中进行 menu 相关配置&#xff0c;来决定当前路由是否…

传递给Java方法的参数必须完成初始化

说明 在调用Java方法的时候&#xff0c;传递给方法的参数必须经过初始化&#xff0c;否则会编译报错。 指向对象的变量&#xff0c;指向一个对象实例就是初始化&#xff1b;赋值为null也是初始化。 代码示例 没有初始化的变量传递给方法编译报错&#xff0c;初始化的编译通过…

QTableWidget使用

QTableWidget介绍 QTableWidget是Qt框架中的一个表格控件&#xff0c;用于显示二维表格数据。它是基于QTableView和QStandardItemModel的封装&#xff0c;提供了更简单的接口和功能。 QTableWidget主要具有以下特点&#xff1a; 二维数据表示&#xff1a;QTableWidget以行和列…

ruoyi-cloud 服务间的调用,OpenFeign的使用

1. 在公共包内添加实体类 2.在 com.ruoyi.common.core.constant 添加如下代码 package com.ruoyi.common.core.constant; public class ServiceNameConstants {/*** 药材服务的serviceid &#xff08;生产者 nacos内注册应用名&#xff09;*/public static final String DRUG_…

AI极客日报0818 - AI帮助中风患者重新行走

&#x1f440;AI 日报合集 | &#x1f9e1; 点赞关注评论拜托啦&#xff01; 有了人工智能&#xff0c;似乎没有什么是我们解决不了的。人工智能的一项新突破让瘫痪的中风幸存者能够通过“智能裤子”再次行走。让我们深入了解…… 今日要点: **&#x1f456;惊艳&#xff01…

QT实现天气预报

1. MainWindow类设计的成员变量和方法 public: MainWindow(QWidget* parent nullptr); ~MainWindow(); protected: 形成文本菜单来用来右键关闭窗口 void contextMenuEvent(QContextMenuEvent* event); 鼠标被点击之后此事件被调用 void mousePressEvent(QMouseEv…

系统架构设计师之软件架构风格

系统架构设计师之软件架构风格