这是我的尝试:
public static void main(String[] args) {
// Max 100_000
System.out.println(Arrays.toString(randomFour(100_000)));
}
public static int[] randomFour(int max) {
Random r = new Random();
int[] four = new int[4];
for (int i = 0; i < 4; i++) {
while (true) {
// Random from 1 to max
four[i] = 1 + (int) (r.nextFloat() * max);
boolean dup = false; // check j: 0 -> i-1
for (int j = 0; j < i; j++) {
if (four[j] == four[i]) {
dup = true;
break;
}
}
if (dup == false) {
break;
}
}
}
return four;
}
这个实现工作正常。有没有更好的算法来解决这个问题(时间和内存消耗),尤其是对于一个非常大的最大值?谢谢!
明月笑刀无情
相关分类