获取随机数(具有特定范围的百分比)

时间:2018-03-12 07:42:06

标签: java random

我在1-100之间生成随机数,我只想知道是否可以设置更大的百分比来获得一些数字。 例如:范围是1-100,但我希望有70%的机会获得40-50之间的数字。

2 个答案:

答案 0 :(得分:2)

这不是计算机科学问题,而是概率论问题。编程语言通常提供遵循均匀分布的伪随机数生成器。基于概率积分变换,它们总是可以转换为您选择的分布。

您需要一个转换函数,从[0,100]范围内的均匀分布到您在相同范围内的选择分布。然后,您继续从统一分布(编程语言提供)中绘制数字,并使用变换函数映射结果值。

检查例如以下文章:

答案 1 :(得分:1)

您没有提供任何代码,因此我也不会这样做:)

要解决此问题,请使用更长的范围。如果您的随机数高于您要求的范围,请重新计算它以使其适合该范围。

在您的情况下,请使用范围1-300。如果< = 100,请使用原始号码。如果> 100,减去100,除以200(300-100),乘以10(50-40),加40(进入范围内)。

为什么300是答案?在1-100范围内,90个数字超出41-50范围。由于您希望70%的数字在该范围内,因此90个外部人员占总人口的30%。 30%是90,意味着100%是90 / 0,3 = 300