【java】随机⽣成体彩⼤乐透号码(指定区间内多个不重复的随机数)
跟同学买看完开奖后的摸鱼。
⼤乐透的格式为前区5个整数,取值范围1-35,后区2个整数,取值范围1-12,且同区间内不能重复。
其实要解决的也就是不重复的问题。
⼀开始的思路是⽤哈希,或者和取值范围等长的数组,取出后标记该位是否被取过。但问题就是要⼀直随机直到到没有取过的数字。所以最后⽤了链表,取出来了删掉即可。
public class bighappytou {
public static int[]get(){
int[] re =new int[7];//结果
List<Integer> block1 =new LinkedList<>();//前区池
List<Integer> block2 =new LinkedList<>();//后区池
//初始化前后区的取值
java生成随机数的方法
for(int i =1;i <=35;i++){
block1.add(i);
if(i <=12) block2.add(i);
}
//取前区5个数字,随机⽣成索引,取出后删掉该结点
for(int i =0;i <5;i++){
int index =(int)(Math.random()*(block1.size()-0)+0);
re[i]= (index);
}
for(int i =0;i <2;i++){
int index =(int)(Math.random()*(block2.size()-0)+0);
re[i +5]= (index);
}
//排序,⽅便卖的打号
Arrays.sort(re,0,5);
Arrays.sort(re,5,7);
return re;
}
public static void main(String[] args){
int num =5;//⼏注。有风险,每次⼀注就⾏了,重在公益
while(num--!=0){
System.out.String(get()));
}
}
}
还顺便复习了⼀下sort的⽤法,其中两个索引是包含前⼀个不包含后⼀个的,所以toIndex要多写⼀位。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论