利用随机数生成数组下标之模拟直播抽奖!
利用随机数生成数组下标,模拟直播抽奖!**我们先来看一下题目:**一个大V直播抽奖,奖品是现金红包,分别有{2,588,888,1000,10000}五个奖金。请使用代码模拟抽奖,打印出每个奖项,奖项的出现顺序要随机且不重复。
再来看一下题目要求打印的内容:打印效果如下:(随机顺序,不一定是下面的顺序)588元的奖金被抽出10000元的奖金被抽出1000元的奖金被抽出2元的奖金被抽出888元的奖金被抽出***简要分析:首先我们需要定义一个存放奖金的数组其次我们还需要一个boolean类型的数组去跟奖金数组做对比接着需要一个随机数去生成数组的下标然后我们需要用技术区去记录去到的值接着定义一个数组下标,每输出一个数,下标改成对应的数的下标创建循环体,取5次数判断这个数是否取重复了***按照分析,我们用代码实现它:importjava.util.Random;/***1.一个大V直播抽奖,奖品是现金红包,分别有{2,588,888,1000,10000}五个奖金。*请使用代码模拟抽奖,打印出每个奖项,奖项的出现顺序要随机且不重复。*打印效果如下:(随机顺序,不一定是下面的顺序)888元的奖金被抽出*588元的奖金被抽出10000元的奖金被抽出1000元的奖金被抽出2元的奖金被抽出**/publicclassPrice{//程序入口publicstaticvoidmain(String[]args){//定义一个数组用来存放随机产生的5个数int[]bouns={2,588,888,1000,10000};//定义一个boolean类型的数组,boolean[]boo=newboolean[5];//定义一个随机数Randomrd=newRandom();//定义一个计数器,每输出一个需要输出的数,计数器就记录一次intcounter=1;//定义一个数组下标,每输出一个数,下标改成对应的数的下标intindex=-1;//创建循环体,取5次数while(counter//如果为true//进入下一次循环continue;}else{//如果为false//计数器加一counter++;//输出这个数System.out.println(bouns[index]+"元的奖金被抽出!");把这个数的下标改成改为trueboo[index]=true;}}}}最后,我们来看看最终运行的效果吧!我们可以看到两次都是随机抽的,效果达到!总结:本题就是利用随机数产生的数组下标,去找数组里面的数,然后打印相关内容,还有一种方法就是利用数组的缩容去实现,我们改日分享另一种做法,感谢大家持续关注!
Numpy——随机数数组生成
importnumpyasnp1、随机数种子
np.random.seed(0)如果在程序上方添加此行代码,则每次程序执行生成相同的随机数组
2、np.random.randint()生成随机整数组成的数组
np.random.randint(1,10,size=3)#array([6,1,4])生成[1,10)之间的整数组成的数组np.random.randint(1,10,size=(3,3))#array([[3,8,9],#[1,8,5],#[9,5,5]])3、np.random.random()生成0~1之间均匀分布的随机数组
np.random.random((3,3))#array([[0.4573887,0.64439714,0.06037948],#[0.61476275,0.94440412,0.16025992],#[0.72961138,0.6090939,0.18511639]])4、np.random.normal()生成正态分布组成的随机数组
np.random.normal(0,1,(3,3))#生成由均值为0,标准差为1的标准正态分布组成的随机数组#array([[1.34803578,0.9076988,2.68057084],#[-0.20080851,-0.9988488,-0.74013679],#[-0.56549781,0.47603138,-2.15806856]])在线随机小数生成器
输入生成随机数的数目,最小值和最大值:
在线随机小数生成器采用伪随机数生成原理进行生成,只能确保“好似”的随机特性,可保证单次,有限次生成次数内,数值不会重复
选择随机小数的最大小数、最小小数范围,并设置在此范围内的生成个数,在生成范围内,个数越少,生成相似性越低
选择保留小数的位数,是否唯一特性,点击“生成小数”进行生成