gpt4 book ai didi

Java:随机数生成器中候选人人数过多?

转载 作者:行者123 更新时间:2023-12-02 10:56:16 25 4
gpt4 key购买 nike

这里是《Java算法与客户端 - 算法,第四版》的StdRandom类中生成长型随机数的方法。

    public static long uniform(long n) {
if (n <= 0L) throw new IllegalArgumentException("argument must be positive: " + n);

// https://docs.oracle.com/javase/8/docs/api/java/util/Random.html#longs-long-long-long-
long r = random.nextLong();
long m = n - 1;

// power of two
if ((n & m) == 0L) {
return r & m;
}

// reject over-represented candidates
long u = r >>> 1;
while (u + m - (r = u % n) < 0L) {
u = random.nextLong() >>> 1;
}
return r;
}

谁能解释一下 (u + m - (r = u % n) < 0L) 部分在做什么?我不明白“候选人人数过多”是什么意思。

最佳答案

对不起大家,我现在明白这意味着什么了。它防止随机数位于长度为n的最大不完全区间。

关于Java:随机数生成器中候选人人数过多?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51706364/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com