【问题标题】:Getting a random number (with a percentage for a specific range)获取随机数(特定范围的百分比)
【发布时间】:2018-08-20 04:18:59
【问题描述】:

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

【问题讨论】:

  • 如果您在此类问题上需要帮助,向我们展示您迄今为止尝试过的内容并以简约示例向我们展示您的代码非常有帮助,因此我们可以重现你的问题。
  • 你可以创建0到1之间的随机数,如果达到0.7以上,那么你可以生成40到50之间。否则生成1-100
  • @mlecz 或者更确切地说,在 1-90 之间,然后进行调整。否则,您将再次获得 40 到 50 之间的数字。

标签: java random


【解决方案1】:

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

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

检查例如以下文章:

【讨论】:

    【解决方案2】:

    你没有提供任何代码,所以我也不会这样做:)

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

    在您的情况下,请使用 1-300 范围。如果 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-13
      • 2012-07-29
      • 2021-12-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多