我用它来生成5to 之间的值13
int randomGeneratedLevelValue = ThreadLocalRandom.current().nextInt(5, 13);
Run Code Online (Sandbox Code Playgroud)
如何减少相同的匹配?
在不偏置随机数序列的情况下,无法减少真随机数序列中的重复次数.
因此,例如,在你的序列中10, 5, 12, 12, 13, 13,12另一个偶然的概率12是1比9; 即与该范围内任何其他数字的概率相同.
现在有可能因为你正在使用Random/ ThreadLocalRandom你正在看到线性同余生成器中固有的自相关的影响.如果是这样,可以通过SecureRandom改为使用来消除这些影响.但是SecureRandom电话费用要贵得多.
另一种方法是故意偏向对重复; 例如(伪代码)
int random = rand.nextInt(...)
if (random == lastRandom) {
random = rand.nextInt(...);
}
return random;
Run Code Online (Sandbox Code Playgroud)
不过要小心.引入偏见可能会产生意想不到/意外的后果.