Java 如何分配更高的概率从该代码中提取数字10?

Java 如何分配更高的概率从该代码中提取数字10?,java,random,probability,Java,Random,Probability,如何分配更高的概率从Java代码中提取数字10?很多方法 Random.nextInt(10)返回包含范围[0,9]内的值。 所以Random.nextInt(10)+2是[2,11] 一种绝对武断的方式是: Random rng = new Random(); int cardValue = rng.nextInt(10) + 2; 这将使10的概率为任何其他值的1/5倍 如果你只想在价值上有所偏袒,你可以将更多的价值“映射”到10 另一种(快速)方法是使用重复的值构建一个数组,该值为您提供

如何分配更高的概率从Java代码中提取数字10?

很多方法

Random.nextInt(10)
返回包含范围[0,9]内的值。 所以
Random.nextInt(10)+2
是[2,11]

一种绝对武断的方式是:

Random rng = new Random();
int cardValue = rng.nextInt(10) + 2;
这将使10的概率为任何其他值的1/5倍

如果你只想在价值上有所偏袒,你可以将更多的价值“映射”到10

另一种(快速)方法是使用重复的值构建一个数组,该值为您提供所需的概率。 这相当于从洗牌牌组中抽取(在本例中)10比其他数字多的牌。那是替换

如果您想进一步模拟图形而不进行替换,可以将最后一个图元复制到拾取的图元并缩小每个图形的范围

PS:这可能是样本代码,但我不会在每次通话中分配一个新的
Random
。 它(如果有的话)提供的分销保障较少。
您将(至少在单元测试中)希望强制种子使序列可复制-即使您希望它在应用程序中每次都不同。

这可能不满足您的所有约束,但它应该让您朝着正确的方向前进

Random rng = new Random();
int cardValue = rng.nextInt(11) + 2;
if(cardValue==12){
    cardValue=10;
}
int percent=Random.nextInt(100);
如果(百分比<21){
百分比=10;//21%的时间
}
否则{
百分比=百分比%10;//剩余时间
}
收益率;

您可以尝试
new Random()。不过,还不清楚你想要使用什么权重。我是否可以将概率分配给一个特定的数字。我需要把它分配给你。谢谢你,你能对代码做什么修改?根据nextInt方法的文档“所有可能的绑定int值都以(大约)相等的概率生成。”您当前的代码将生成2到11之间的值。那是你的意图吗?无论如何,看看有没有什么好主意。。
int percent = Random.nextInt(100);
if (percent < 21) {
   percent = 10;// 21% of the time
}
else {
   percent = percent % 10;// the rest of the time
}
return percent;