这是我的尝试: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
	提交
		取消
	