生成随机数,但必须使用唯一数字生成而不进行复制

use*_*327 4 java random

int[] drawNumbers = new int[10];//Array With 10 Random Numbers USED for DRAWN NUMBERS
String x = "Drawn Numbers: ";
List<Ticket> ticketWon ;

do{
    //GENERATING 10 Random Numbers
    for (int i = 0; i <= drawNumbers.length -1 ; i++) {
           Random r = new Random();
           drawNumbers[i] = r.nextInt(99) + 1;
           x += drawNumbers[i] + " ";
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试生成10个必须随机生成的随机数和唯一.我的问题是,Random r = new Random()有时会显示复制的数字.如何在没有重复的情况下从1到99生成10个随机数?

问题在于彩票系统

我想使用,Collection.Shuffle但我不确定它应该如何实现.

ben*_*bia 5

这是实现所需结果的另一种方法.我们使用值1到99填充列表.然后我们将列表洗牌并获取前10个值:

public static void main(String[] args) {
    ArrayList<Integer> list = new ArrayList<Integer>();
    for (int i=1; i<100; i++) {
        list.add(new Integer(i));
    }
    Collections.shuffle(list);
    for (int i=0; i<10; i++) {
        System.out.println(list.get(i));
    }
}
Run Code Online (Sandbox Code Playgroud)

您不必进口/直接处理Random,这是一个加号.但是,正如@Voicu所指出的那样(在评论中)shuffle确实使用了随机:

public static void shuffle(List<?> list) {
    if (r == null) { 
        r = new Random();
    }
    shuffle(list, r);
}
private static Random r;
Run Code Online (Sandbox Code Playgroud)