Java 如何选择范围内的随机数,但加权到该范围的一部分?(爪哇语)
我想选择一个数字范围内的随机数,但权重是该范围的一部分。例如:Java 如何选择范围内的随机数,但加权到该范围的一部分?(爪哇语),java,random,apache-commons,Java,Random,Apache Commons,我想选择一个数字范围内的随机数,但权重是该范围的一部分。例如: Pick a random number between 1-10 If it is <= 6 Return a random number between 1-5 Else Return a random number between 6-10 EndIf 选择1-10之间的随机数 称重,使1-5比6-10可能高20% 这可能吗?我该怎么做呢?这取决于你希望概率分布的样子 例如: Pick a random
Pick a random number between 1-10
If it is <= 6
Return a random number between 1-5
Else
Return a random number between 6-10
EndIf
这可能吗?我该怎么做呢?这取决于你希望概率分布的样子 例如:
Pick a random number between 1-10
If it is <= 6
Return a random number between 1-5
Else
Return a random number between 6-10
EndIf
选择1-10之间的随机数
如果是则会想到两种解决方案。首先,随机运行两次:
java.utils.Random randomGenerator = new java.utils.Random();
int random = randomGenerator.nextInt(11);
if(random <= 6) { //This is 20% more
random = randomGenerator.nextInt(5) + 1;
} else {
random = randomGenerator.nextInt(5) + 6;
}
java.utils.Random randomGenerator=new java.utils.Random();
int random=randomGenerator.nextInt(11);
如果(随机尝试以下方法:
public int weightedRandom() {
int rand = Math.floor(Math.random() * 5 + 1) // From 1 to 5
if (Math.random() >= 0.6) {
++rand;
}
return rand;
}
要生成概率钟形曲线,滚动并求和多个骰子。然后减去平均值。如果结果为负,则重新滚动。滚动的骰子越多,权重越大
这里有一种方法,完全未经测试
float sum;
do {
sum = rollThreeDice(); // returns 3 to 18, with an average is 10.5
sum -= 10.5; // Now the range is 0 to 7.5, with the lower end being more likely.
} while(sum < 0);
return sum;
浮点数;
做{
sum=rollThreeDice();//返回3到18,平均值为10.5
sum-=10.5;//现在的范围是0到7.5,下限更可能。
}和<0;
回报金额;
当然,你可以用任意数量的边掷骰子来产生所需的范围。你可以通过选择骰子的数量来控制频率曲线。你希望1是最有可能的,10是最不可能的,还是希望1-5是同样有可能的,6-10是同样有可能的?我玩各种骰子游戏。我从来没有考虑过我写了这个问题。所以给你+1!这正是我最后要做的!因为它有效,而且你在我之前就发布了它,我将此标记为答案。谢谢!