這是我的嘗試: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
提交
取消