代码:
package edu.test;
import java.util.Random;
public class Test6 {public static void main(String[] args) {int arr[] = {2, 1888, 2888, 388, 588};//创建奖池arrint newArr[] = new int[arr.length];//抽奖结果newArrfor (int i = 0; i < 5; ) {//抽5次,Random r = new Random();int randomIndex= r.nextInt(arr.length);//创建随机索引randomIndexint prize = arr[randomIndex];//随机在奖池里取一个奖项作为prize.boolean flag = award(newArr, prize);//调用方法判断这个奖项是否存在抽奖结果数组里。if (!flag){//也就是当flag为flase才会执行,也就是奖项不在抽奖结果newArr里,下一步就要把这个奖项放入抽奖结果newArr里。newArr[i]=prize;i++;//因为是判断才执行所以for里的i++就放到了这里。如果奖项存在结果里,就不会进入这一步,会在for循环里再次随机一个数字,}}for (int i = 0; i < newArr.length; i++) {//最后打印抽奖结果。System.out.println(newArr[i]+"元奖项被抽出");}}public static boolean award ( int arr[], int prize){//boolean型的方法for (int i = 0; i < arr.length; i++) {//遍历传过来的数组里是否有奖项prize。if (arr[i] == prize) {return true;//存在。返回true。}}return false;//循环完了都没有就返回false。}
}
结果如下:

对代码优化:

上述代码运行速度慢,换一种思路,可以直接先打乱奖池在直接输出。就会更快也更容易理解。

package edu.test;
import java.util.Random;
public class Test7 {public static void main(String[] args) {int arr[]={1888,2,588,388,2888};Random r=new Random();for(int i=0;i<arr.length;i++){int randomIndex=r.nextInt(arr.length);//先打乱再抽出也就是随机两两交换,并不会出现重复问题。int temp=arr[i];arr[i]=arr[randomIndex];arr[randomIndex]=temp;}for(int i=0;i< arr.length;i++) {System.out.println(arr[i]+"元奖项被抽出");}}}
代码结果如下:

Java模拟抽奖。奖池有以下几个奖项:【2,1888,588,388,2888】打印出抽奖结果,要求随机且不重复。两种方法(代码和优化后的代码)相关推荐

  1. python怎么模拟浏览器交互_干货分享:python爬虫模拟浏览器的两种方法实例分析(赶紧收藏)...

    今天为大家带来的内容是:干货分享:python爬虫模拟浏览器的两种方法实例分析(赶紧收藏) 文章主要介绍了python爬虫模拟浏览器的两种方法,结合实例形式分析了Python爬虫模拟浏览器的两种常见操 ...

  2. 模拟键盘鼠标事件有两种方法

    实现一个鼠标或者键盘模拟器,可以完成很多功能,比如做一个简单的游戏外挂^_^.通常,模拟键盘鼠标事件有两种方法: 1.keybd_event, mouse_event 2.SendMessage, P ...

  3. 【数字图像处理】模拟Matlab的imresize()写一个你自己的imresize()函数,至少应实现‘nearest’和‘bilinear’两种方法

    作业要求:模拟Matlab的imresize()写一个你自己的imresize()函数,至少应实现'nearest'和'bilinear'两种方法. 首先理论方面主要参考了一下两个网址 https:/ ...

  4. sqrt函数模拟实现的两种方法

    起因:在leetcode刷题时,有一道题目考察了有关sqrt的原理的题目,当时就去查了网上的文章,结果发现,一开始的时候看的很懵,最后也是搞定了两种方法,今天我就以最简单的方式写下这两种方式的思路讲解 ...

  5. strlen函数的用法及模拟实现strlen函数的两种方法

    strlen函数的用法及模拟实现strlen函数的两种方法 一.strlen函数的用法 strlen的简单应用 二.指针模拟实现strlen函数 三.递归模拟实现strlen函数 一.strlen函数 ...

  6. 利用多线程爬虫搭建代理ip池的两种方法(含源码)

    搭建爬虫代理ip池的两种方法(含源码) 前言 一.ip池是什么? 二.爬取原理 三.使用步骤 方法一 爬取网站https://www.kuaidaili.com/ 验证 存取到mysql 方法二 爬取 ...

  7. java中调用dll文件的两种方法

    https://www.cnblogs.com/huozhong/p/5830485.html JNA地址:http://blog.csdn.net/shendl/article/details/35 ...

  8. 使用Linux服务器运行深度学习代码 || 两种方法,粗暴高效

    [本文是介绍快速远程使用Linux服务器运行深度学习.机器学习代码,全程高能,史上最全] 前面介绍了以下几个内容,不会的可以转链接看下 教你无脑式安装Xshell.Xftp,快速远程连接使用Linux ...

  9. java 匿名list,java创造匿名对象的两种方法

    在java中有时候需要一些匿名对象的使用.可能有些小伙伴拿还不会创造,其实我们在学习一些方法时都或多或少的接触过.本篇所要讲到的创造匿名对象总结了两种方法,分别是静态工具方法和Lambda表达式,我们 ...

最新文章

  1. Java 程序员薪资这么高,取决于什么?
  2. 三星6.0系统手机最简单激活XPOSED框架的教程
  3. 14.parfor并行循环处理
  4. 第四范式获批工信部工业和信息化人才培养工程培训基地
  5. 解决spring的xml文件cannot be open ( class path resource cannot be opened)
  6. LeetCode-反转链表
  7. 用驴子拖宝马——怎样滥用结构体
  8. spring中注解的通俗解释
  9. 两分钟看懂CPU生产过程
  10. @PropertySource 解析 yml 配置文件,自定义解析 yaml 工厂类
  11. Windows下的TFTP传输文件
  12. R语言|ggtreeExtra包绘制进化树
  13. 从分类到选型,一文了解 SITOP 电源
  14. 清华大学何平:央行数字货币具备许多优势 但不可盲目推进
  15. flash 与动画 轮盘旋转
  16. Python 测试题(覆盖了大多数的基础知识和进阶)
  17. 冰箱10分钟启动一次_冰箱正常多久启动一次
  18. 关于python的ppt_用Python玩转PPT
  19. HKEY_LOCAL_MACHINE:hardware\DeviceMap\SerialComm里找不到串口的解决办法
  20. 时尚唯美婚礼视频制作AE标题模板 Wedding Responsive Titles

热门文章

  1. jpg格式怎么转换成plt格式的_CAD图纸如何转换成清晰的JPG格式图片?
  2. 如何在matlab中高效优雅地绘制论文插图?
  3. IT主题的小型文献综述
  4. “辽宁号航空母舰”模型亮相南京
  5. vnc远程控制软件 不能不用的3款vnc远程控制软件
  6. 2021-03-17~18 大数据课程笔记 day56day57
  7. GitHub热榜第一的Python抢票神器,节假日能用上
  8. iOS push 导航栏显示 隐藏
  9. SnagIt32截图工具的使用
  10. 【学习笔记】处理极大组合数