我需要从特定范围生成4个未重复的数字。有没有有效的方法呢?
答案 0 :(得分:1)
如果您的范围是[x,y],则在[x,y-3]中生成任意4个数字
这4个数字可以重复,没关系
排序他们。假设它们是:a1< = a2< = a3< = a4。现在使用
数字b1 = a1,b2 = a2 + 1,b3 = a3 + 2,b4 = a4 + 3,好像它们是
生成的。它们在[x,y]中并且不重复。
答案 1 :(得分:1)
这是最简单的方法。
final int LIMIT = 100;
final int COUNT = 4;
Set<Integer> randomNumbers = new HashSet<Integer>(COUNT);
while(randomNumbers.size() < COUNT) {
randomNumbers.add(new Random().nextInt(LIMIT));
}
答案 2 :(得分:0)
ArrayList<Integer> numbers= new ArrayList<Integer>();
int from = 2, to = 100;
for(int i=from;i<=to;i++)
{
numbers.add(i);
}
Collections.shuffle(numbers);
从arrayList中选择前四个数字。