java专题练习(抢红包)

2023-09-20 16:21:39
package 专题练习;

import java.util.Random;

public class grab_red_packet {
    /* 需求:
   直播抽奖,分别由{2,588,888,1000,10000}五个奖金,请用代码模拟抽奖,奖项出现顺序要随机且不重复
   打印效果:
   588元的奖金被抽出*/
    //思路:
    //1. 先用数组把奖金定义好
    //2. 用random方法给出随机数索引
    //3. 题目告诉长度为5.  随机数范围就是0-4
    //4. 难点:不能重复, 那就想办法不让随机数重复就好了
    //总结而言:其实就是一个循环嵌套,外循环来控制输入随机数,内循环来控制是否重复

    public static void main(String[] args) {
        //定义奖金数组
        int[] jiangjin = new int[]{2, 588, 888, 1000, 10000};
        //定义奖金已经出现数组
        int[] jiangjinhavebeen = new int[jiangjin.length];
        //直接调用 答案解出
        Restart(jiangjinhavebeen,jiangjin);
    }
    //抽取随机数的方法
    public static int Get_suijishu(int[] jiangjin){
        //就是随机生成一个数字
        Random r = new Random();
        int suijishu = r.nextInt(jiangjin.length);
        return suijishu;
    }
    //判断重复 重复返回-1   没重复返回1 (内循环)
    public static int Pan_duan_chongfu(int[] havebeenjiangjin,int []jiangjin,int suijishu){
        for (int j = 0; j < havebeenjiangjin.length; j++) {
            if(havebeenjiangjin[j] == jiangjin[suijishu]) {
                return -1;
            }
        }
        return 1;
    }
    //外循环 (重复抽取随机数)
    public static void Restart(int[] jiangjinhavebeen,int[] jiangjin){
        for (int i = 0; i < jiangjinhavebeen.length; ) {
            //先外循环(实现随机数),后内循环(判断是否有重复,如果有重复,外循环次数-1,如果不重复,在外循环读出)
            //实现随机数(调用生成随机数方法)
            int suijishu = Get_suijishu(jiangjin);
            //调用 (判断是否重复方法)
            if(Pan_duan_chongfu(jiangjinhavebeen,jiangjin,suijishu) == 1){
                jiangjinhavebeen[i] = jiangjin[suijishu];//如果没有重复,就把当前的已经抽出来的奖金录入到(已经出现过的奖金)的数组里面去
                System.out.println(jiangjinhavebeen[i] + "元的奖金被抽出");
            }
            else{
                System.out.println("随机数为:" + suijishu + "的奖品已经被抽出,请重新抽取");
                i++; //如果重复,那么外循环的次数就不能增加,应该保持原次数(这里i--,循环条件里由i++,两者相加i刚好还是等于i)
            }
        } 
    }
    
    
    
    //其实这个题目也可以这样理解,就是把原数组打乱(用随机数)最后输出,个人觉得不如上面的代码给到用户信息及时和明确
    public static void mode_two(int[] jiangjin){
        
        for (int i = 0; i < jiangjin.length; i++) {
            int suijishu = Get_suijishu(jiangjin); //获取随机数
            int temp = jiangjin[i];
            jiangjin[i] = jiangjin[suijishu];
            jiangjin[suijishu] = temp;  
        }  //这样就打乱顺序了, 这样的算法也让博主很受启发.
        
        //遍历
        for (int i = 0; i < jiangjin.length; i++) {
            System.out.print(jiangjin[i]);
        }
    }
}
更多推荐

Tomcat部署及优化

Tomcat部署及优化一、Tomcat1.Tomcat简介2.Tomcat核心组件2.1什么是servlet2.2什么是JSP3.Tomcat的作用4.Tomcat组件结构4.1Container结构分析5.Tomcat请求过程二、Tomcat服务部署1.安装JDK1.2设置JDK环境变量2.安装启动Tomcat2.1

【转载保存】词性还原和词干的区别

词形还原(lemmatization),是把一个任何形式的语言词汇还原为一般形式(能表达完整语义),而词干提取(stemming)是抽取词的词干或词根形式(不一定能够表达完整语义)。词形还原和词干提取是词形规范化的两类重要方式,都能够达到有效归并词形的目的,二者既有联系也有区别现将共同点和联系总结为以下4方面:(1)目

python教程:使用gevent实现高并发并限制最大并发数

嗨喽~大家好呀,这里是魔王呐❤~!python更多源码/资料/解答/教程等点击此处跳转文末名片免费获取importtimeimportgeventfromgevent.poolimportPoolfromgeventimportmonkey#一,定义最大并发数p=Pool(20)#二,导入gevent猴子补丁,没有它,

玩转Nginx

Nginx是什么Nginx(enginex)是一款的Web服务器、反向代理服务器,能够实现前端Web应用的部署、请求反向代理及负载均衡处理等功能。特点轻量,占用内存少高可靠高并发、高性能可扩展性好支持热部署BSD许可证(开源、可修改再发布)反向代理(ReverseProxy)客户端请求某个网络资源。这个请求会发送到反向

基于Kintex UltraScale系列FPGA KU060/KU115高性能PCIe数据预处理载板(5GByte/s带宽)

PCIE702是一款基于PCIE总线架构的高性能数据预处理FMC载板,板卡具有1个FMC+(HPC)接口,1路PCIex8主机接口、1个RJ45千兆以太网口、2个QSFP+40G光纤接口。板卡采用Xilinx的高性能KintexUltraScale系列FPGA作为实时处理器,实现FMC接口数据的采集、处理、以及背板接口

Stability AI推出Stable Audio;ChatGPT:推荐系统的颠覆者

🦉AI新闻🚀StabilityAI推出StableAudio,用户可以生成个性化音乐片段摘要:StabilityAI公司发布了一款名为StableAudio的工具,用户可以根据自己的文本内容自动生成音乐或音频。免费版可生成最长20秒音乐片段,Pro订阅用户可生成最长90秒的音频内容。该公司希望这款工具能够激发音乐爱

JS Set和Map数据结构

Set和Map数据结构1.Set数据结构1.1Set增删改查1.1.1add()方法1.1.2delete()1.1.3has()1.1.4clear()1.1.5size1.2Set遍历方法1.2.1keys()1.2.2values()1.2.3entries()1.2.3forEach()2.Map数据类型2.1

最大限度节省采购成本的七种方法

当前经济环境下,降低成本比以往任何时候都更受到企业的重视。降低成本通常是指在采购过程中节省的成本,但其实远不止于此。它还包括通过重新谈判合同条款和条件、改进管理和运营流程,以及数据和技术的智能使用而节省的成本。节省采购成本的七种方法虽然采购成本不可能完全消除,但采购专业人员可以采用一些技巧和方法来减少这些支出。1.重新

【前端知识】Three 学习日志(一)—— Three.js 的简单尝试

Three学习日志(一)——Three.js的简单尝试Three.js是一个使用JavaScript编写的轻量级3D图形库,它可以在浏览器中渲染出3D场景。在学习Three.js的过程中,建立基本场景是一个重要的第一步。通过设置相机、场景和渲染器等组件,可以创建一个简单的3D场景。在建立基本场景之后,可以通过添加模型、

软件需求怎么写?

前言:一般来说,软件产品的需求人员的主要输出物就是软件需求,如果这个软件产品就XX系统,人们口中的“系统需求”和“软件需求”就没有什么区别了。在车企行业,推行这ASPICE体系,在这个体系中明确申请了系统域和软件域,分别定义了系统需求和软件需求,那两者就有一些区别的。笔者作为一个开发转岗的软件需求,下文主要是在项目实战

MyBatis配置文件(mybatis-config.xml)

MyBatis配置文件的结构如下<?xmlversion="1.0"encoding="utf-8"?><!DOCTYPEconfigurationPUBLIC"-//mybatis.org//DTDConfig3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">

热文推荐