设计一个抽奖程序,程序通过随机方式产生中奖序号。程序可以设置序号包含数字位数
和最大序号,一次抽取几个中奖序号(最少 1 个序号,最多不超过 2 个序号)和总共中奖
人数(最少 5 人)。抽奖过程分多轮进行,最后现实出所有的中奖的序号。
package 随机函数练习;
import java.util.*;
public class RandomPratice {
public static void main(String[] args)
{
int people=-1111,bit=0,max=0,x=0,num=0;
int n=0,flag=0,i=1; //控制条件
Scanner scanner=new Scanner(System.in);
Random rand=new Random();
System.out.println("请输入中奖人数,最少为五人");
do {
if(people!=-1111)
System.out.println("请重新输入,最少五人");
people=scanner.nextInt();
}while(people<5);
int[] array = new int[people];
for(i=1;flag<people;i++) {
System.out.println("第"+i+"轮抽奖开始");
System.out.println("请输入序号数字位数:");
bit=scanner.nextInt();
bit=(int)Math.pow(10, bit-1); //算出设置位数的最小数
if(bit==1)
bit=0;
do {
System.out.println("请输入最大序号,最大序号必须大于设置位数的最小数:");
max=scanner.nextInt();
}while(max<=bit);
do {
System.out.println("请输入每次抽取几个");
System.out.println("注意每次中奖序号最少 1 个序号,最多不超过 2 个序号:");
num=scanner.nextInt();
}while(num<1||num>2);
for(n=0;n<num;n++)
{
x=max-bit;
array[flag]=bit+rand.nextInt(x); //变相求bit和max中间的随机数
flag++;
if(flag==people)
break;
}
}
System.out.print("所有的中奖序号为:");
for(int d:array)
System.out.print(d+" ");
}
}
实验结果:
请输入中奖人数,最少为五人
5
第1轮抽奖开始
请输入序号数字位数:
2
请输入最大序号,最大序号必须大于设置位数的最小数:
77
请输入每次抽取几个
注意每次中奖序号最少 1 个序号,最多不超过 2 个序号:
2
第2轮抽奖开始
请输入序号数字位数:
3
请输入最大序号,最大序号必须大于设置位数的最小数:
789
请输入每次抽取几个
注意每次中奖序号最少 1 个序号,最多不超过 2 个序号:
2
第3轮抽奖开始
请输入序号数字位数:
2
请输入最大序号,最大序号必须大于设置位数的最小数:
57
请输入每次抽取几个
注意每次中奖序号最少 1 个序号,最多不超过 2 个序号:
2
所有的中奖序号为:37 39 477 162 11