java题目之抽奖以及优化方式

复制代码
public class Main9 {
    public static void main(String[] args) {

        int[]arr={ 2,588,888,1000,10000};
        int [] newArr=new int[arr.length];

        //3.抽奖
        Random r=new Random();
        //因为有5个奖项,所以这里循环五次
        for (int i = 0; i <5 ; ) {
           //获取随机索引
            int randomIndex=r.nextInt(arr.length);
            //获取奖项
            int prize=arr[randomIndex];
            //判断当前的奖项是否存在,如果存在就重新抽取,如果不存在,就表示有效奖项
           boolean flag= contains(newArr,prize);
            if (!flag) {
                newArr[i]=prize;
                i++;
            }
        }

        for (int i = 0; i <newArr.length ; i++) {
            System.out.println(newArr[i]) ;

        }
    }

    //判断prize在数组当中是否存在
    //存在的话:true
    //不存在的话:false


    public static  boolean contains(int[] arr, int prize) {
     for(int i=0; i<arr.length; i++) {
         if(arr[i]==prize) {
             return true;
         }
    }
     return false;
    }
}
复制代码
优化以后的代码:
public class Main10 {
    public static void main(String[] args) {
        int [] arr={2,588,888,1000,11000};
        Random sc=new Random();
        //把奖池里面的顺序打乱

        for (int i = 0; i <arr.length ; i++) {
            //获取随机索引
            int randomIndex=sc.nextInt(arr.length);
            //拿着i跟随机索引上randomIndex的值进行交换
            int temp=arr[i];
            arr[i] = arr[randomIndex];
            arr[randomIndex]=temp;

        }

        //遍历奖池从0索引开始获取每一个奖项
        for (int i = 0; i < arr.length ; i++) {
            System.out.print(arr[i]+" ");
        }
    }
}
相关推荐
知兀6 分钟前
【MybatisPlus】后端用枚举类,数据库用tinyint,存在枚举类型转换
java
StockTV8 分钟前
印度股票实时数据 NSE和BSE的实时行情、K 线及指数数据
java·开发语言·spring boot·python
User_芊芊君子10 分钟前
【OpenAI 把 AI 玩明白了】:自主推理 + 动态知识图谱,这 4 个技术突破要颠覆行业
java·人工智能·知识图谱
七颗糖很甜18 分钟前
“十五五”气象发展规划:聚焦五大核心任务
大数据·python·算法
科研前沿25 分钟前
镜像视界浙江科技有限公司的关键技术突破有哪些?
大数据·人工智能·科技·算法·音视频·空间计算
嫩萝卜头儿34 分钟前
2 - 复杂度收尾 + 链表经典OJ
数据结构·算法·链表·复杂度
c++之路43 分钟前
C++20概述
java·开发语言·c++20
星马梦缘1 小时前
算法设计与分析 作业二 答案与解析
算法·图论·dfs·bfs·floyd-warshall·bellman_ford·多源最短路
玛丽莲茼蒿1 小时前
Leetcode hot100 每日温度【中等】
算法·leetcode·职场和发展
Championship.23.241 小时前
Linux Top 命令族深度解析与实战指南
java·linux·服务器·top·linux调试