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