>将该范围中的每个数字依次添加到
list结构中。
>
Shuffle it。
>拿第一个’n’。
这里是一个简单的实现。这将打印从1-10范围内的3个独特的随机数。
import java.util.ArrayList;
import java.util.Collections;
public class UniqueRandomNumbers {
public static void main(String[] args) {
ArrayList list = new ArrayList();
for (int i=1; i<11; i++) {
list.add(new Integer(i));
}
Collections.shuffle(list);
for (int i=0; i<3; i++) {
System.out.println(list.get(i));
}
}
}
使用原始方法的修复的第一部分,正如Mark Byers在现在删除的答案中指出的,是只使用一个Random实例。
这就是导致数字相同的原因。随机实例以当前时间为单位,以毫秒为单位。对于特定的种子值,“随机”实例将返回完全相同的伪随机数序列。