为了账号安全,请及时绑定邮箱和手机立即绑定

随机 4 个小于最大最大值(例如 100_000)的唯一整数的有效算法

随机 4 个小于最大最大值(例如 100_000)的唯一整数的有效算法

德玛西亚99 2023-06-08 19:53:41
这是我的尝试: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();


查看完整回答
反对 回复 2023-06-08
  • 1 回答
  • 0 关注
  • 79 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信