这是我的尝试: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;}这个实现工作正常。有没有更好的算法来解决这个问题(时间和内存消耗),尤其是对于一个非常大的最大值?谢谢!
1 回答
明月笑刀无情
TA贡献1828条经验 获得超4个赞
如果我理解正确的话,你想要一个包含 1 到 100_000(含)之间的 4 个不同随机整数的数组。
这是一种简洁的表达方式
int[] four = ThreadLocalRandom.current() .ints(1, 100_001) // 1 is inclusive, 100_001 is exclusive .distinct() .limit(4) .toArray();
添加回答
举报
0/150
提交
取消