【发布时间】:2021-02-17 17:51:49
【问题描述】:
我知道这个问题已经得到解答,但这些解决方案不适合我的方式,所以我想看看是否有更简单的解决方案。
我用的是set界面,我需要有6个随机数,set界面不能有重复。
这是我目前所拥有的,我这样做的方式并不理想,并且经常导致崩溃。
public void drawLotto(){ //The validation I have here I know isn't the most effective way and is-
Random r = new Random();//resource comsuning but this was the only way I could think of doing it.
int draw[] = new int[6];
int min = 1;
for(int i = 0; i < draw.length; i++){
draw[i] = r.nextInt(lotteryMax-min) + min;
lotteryDraw.add(draw[i]);
}
int size = lotteryDraw.size();
if(size != 6){
drawLotto();
}
for(int i = 0; i < draw.length; i++){
System.out.println(draw[i] + " ,");
}
System.out.println();
}
``
Thank you, any help is appreciated.
【问题讨论】:
-
你以前用过hashmap吗?我会使用 hashmap 来存储你的值,当你使用 nextInt 创建值时,你可以检查你的地图以查看是否已经创建了值
-
r.nextInt(lotteryMax-min) + min您的号码池可能非常小。只需将所有可能的数字添加到数组/列表中,然后随机播放并获取前六个值。这将保证没有重复...