利用随机数生成数组下标,模拟直播抽奖!
**我们先来看一下题目:**
一个大V直播抽奖,奖品是现金红包,分别有{2,588,888,1000,10000}五个奖金。
请使用代码模拟抽奖,打印出每个奖项,奖项的出现顺序要随机且不重复。
再来看一下题目要求打印的内容:
打印效果如下:(随机顺序,不一定是下面的顺序)
- 588元的奖金被抽出
- 10000元的奖金被抽出
- 1000元的奖金被抽出
- 2元的奖金被抽出
- 888元的奖金被抽出
***简要分析:
- 首先我们需要定义一个存放奖金的数组
- 其次我们还需要一个boolean类型的数组去跟奖金数组做对比
- 接着需要一个随机数去生成数组的下标
- 然后我们需要用技术区去记录去到的值
- 接着定义一个数组下标,每输出一个数,下标改成对应的数的下标
- 创建循环体,取5次数
- 判断这个数是否取重复了
***按照分析,我们用代码实现它:
import java.util.Random;
/**
* 1.一个大V直播抽奖,奖品是现金红包,分别有{2,588,888,1000,10000}五个奖金。
* 请使用代码模拟抽奖,打印出每个奖项,奖项的出现顺序要随机且不重复。
* 打印效果如下:(随机顺序,不一定是下面的顺序) 888元的奖金被抽出
* 588元的奖金被抽出 10000元的奖金被抽出 1000元的奖金被抽出 2元的奖金被抽出
*
*/
public class Price {
// 程序入口
public static void main(String[] args) {
//定义一个数组用来存放随机产生的5个数
int[] bouns = {2,588,888,1000,10000};
//定义一个boolean类型的数组,
boolean[] boo = new boolean[5];
//定义一个随机数
Random rd = new Random();
//定义一个计数器,每输出一个需要输出的数,计数器就记录一次
int counter=1;
//定义一个数组下标,每输出一个数,下标改成对应的数的下标
int index = -1;
//创建循环体,取5次数
while(counter<=5) {
//让数组下标随机产生
index=rd.nextInt(bouns.length);
//判断这个数是否是重复的
if(boo[index]) {//如果为true
//进入下一次循环
continue;
}else {//如果为false
//计数器加一
counter++;
//输出这个数
System.out.println(bouns[index]+"元的奖金被抽出!");
把这个数的下标改成改为true
boo[index]=true;
}
}
}
}
最后,我们来看看最终运行的效果吧!
我们可以看到两次都是随机抽的,效果达到!
总结:本题就是利用随机数产生的数组下标,去找数组里面的数,然后打印相关内容,还有一种方法就是利用数组的缩容去实现,我们改日分享另一种做法,感谢大家持续关注!