Java模拟抽奖。奖池有以下几个奖项:【2,1888,588,388,2888】打印出抽奖结果,要求随机且不重复。两种方法(代码和优化后的代码)
代码: 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】打印出抽奖结果,要求随机且不重复。两种方法(代码和优化后的代码)相关推荐
- python怎么模拟浏览器交互_干货分享:python爬虫模拟浏览器的两种方法实例分析(赶紧收藏)...
今天为大家带来的内容是:干货分享:python爬虫模拟浏览器的两种方法实例分析(赶紧收藏) 文章主要介绍了python爬虫模拟浏览器的两种方法,结合实例形式分析了Python爬虫模拟浏览器的两种常见操 ...
- 模拟键盘鼠标事件有两种方法
实现一个鼠标或者键盘模拟器,可以完成很多功能,比如做一个简单的游戏外挂^_^.通常,模拟键盘鼠标事件有两种方法: 1.keybd_event, mouse_event 2.SendMessage, P ...
- 【数字图像处理】模拟Matlab的imresize()写一个你自己的imresize()函数,至少应实现‘nearest’和‘bilinear’两种方法
作业要求:模拟Matlab的imresize()写一个你自己的imresize()函数,至少应实现'nearest'和'bilinear'两种方法. 首先理论方面主要参考了一下两个网址 https:/ ...
- sqrt函数模拟实现的两种方法
起因:在leetcode刷题时,有一道题目考察了有关sqrt的原理的题目,当时就去查了网上的文章,结果发现,一开始的时候看的很懵,最后也是搞定了两种方法,今天我就以最简单的方式写下这两种方式的思路讲解 ...
- strlen函数的用法及模拟实现strlen函数的两种方法
strlen函数的用法及模拟实现strlen函数的两种方法 一.strlen函数的用法 strlen的简单应用 二.指针模拟实现strlen函数 三.递归模拟实现strlen函数 一.strlen函数 ...
- 利用多线程爬虫搭建代理ip池的两种方法(含源码)
搭建爬虫代理ip池的两种方法(含源码) 前言 一.ip池是什么? 二.爬取原理 三.使用步骤 方法一 爬取网站https://www.kuaidaili.com/ 验证 存取到mysql 方法二 爬取 ...
- java中调用dll文件的两种方法
https://www.cnblogs.com/huozhong/p/5830485.html JNA地址:http://blog.csdn.net/shendl/article/details/35 ...
- 使用Linux服务器运行深度学习代码 || 两种方法,粗暴高效
[本文是介绍快速远程使用Linux服务器运行深度学习.机器学习代码,全程高能,史上最全] 前面介绍了以下几个内容,不会的可以转链接看下 教你无脑式安装Xshell.Xftp,快速远程连接使用Linux ...
- java 匿名list,java创造匿名对象的两种方法
在java中有时候需要一些匿名对象的使用.可能有些小伙伴拿还不会创造,其实我们在学习一些方法时都或多或少的接触过.本篇所要讲到的创造匿名对象总结了两种方法,分别是静态工具方法和Lambda表达式,我们 ...
最新文章
- Java 程序员薪资这么高,取决于什么?
- 三星6.0系统手机最简单激活XPOSED框架的教程
- 14.parfor并行循环处理
- 第四范式获批工信部工业和信息化人才培养工程培训基地
- 解决spring的xml文件cannot be open ( class path resource cannot be opened)
- LeetCode-反转链表
- 用驴子拖宝马——怎样滥用结构体
- spring中注解的通俗解释
- 两分钟看懂CPU生产过程
- @PropertySource 解析 yml 配置文件,自定义解析 yaml 工厂类
- Windows下的TFTP传输文件
- R语言|ggtreeExtra包绘制进化树
- 从分类到选型,一文了解 SITOP 电源
- 清华大学何平:央行数字货币具备许多优势 但不可盲目推进
- flash 与动画 轮盘旋转
- Python 测试题(覆盖了大多数的基础知识和进阶)
- 冰箱10分钟启动一次_冰箱正常多久启动一次
- 关于python的ppt_用Python玩转PPT
- HKEY_LOCAL_MACHINE:hardware\DeviceMap\SerialComm里找不到串口的解决办法
- 时尚唯美婚礼视频制作AE标题模板 Wedding Responsive Titles