java - java中如何获取不同范围内不同概率的随机数?

标签 java random

我想得到一个0到100之间的整数随机数,不同范围内有不同的概率。

例如,我希望 0 到 20 之间的值的概率为 0.5 21 到 80 之间的值的概率为 0.4 81 到 100 之间的值的概率为 0.1 .

Java中有没有方法或类或者Java库可以做到这一点?如果没有,我该如何自己做呢?

最佳答案

您只需要一个额外的随机数来确定它应该生成的范围:

int getRandomNumberWithRangeProbability() {
    double range = Math.random();

    if (range < 0.5) {
        return randomWithRange(0, 20);
    } else if (range < 0.9) {
        return randomWithRange(21, 80);
    } else {
        return randomWithRange(81, 100);
    }
}

int randomWithRange(int min, int max) {
    int range = (max - min) + 1;
    return (int) (Math.random() * range) + min;
}

小测试一下可以找到here .

感谢 AusCBloke对于 randomWithRange()方法。

关于java - java中如何获取不同范围内不同概率的随机数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50896039/

相关文章:

java - dcm4che 查询/检索 SCP

javascript - 我可以在整个空间上生成一个随机 float 吗?

javascript - ReactJS 数组中出现随机逗号

java - Gradle 项目同步失败。基本功能(例如编辑、调试)将无法正常工作

java - Google Cloud Endpoints 需要 Android SDK 级别 11 或更高版本

java - 从数组列表中始终删除最后一个元素

java - 背景变化导致强制关闭

random - 生成具有已知均值和方差的随机数

java - Android:随机数不是很随机

c++ - 使用 C++ 或 Python 生成随机数