【问题标题】:Random number with probability有概率的随机数
【发布时间】:2017-05-16 22:48:31
【问题描述】:

我正在尝试生成一个随机数,并且有 x% 的概率接近最大值。

问题是我不知道该怎么做,除非我做一些步骤?

假设我将生成一个介于 1 到 3000 之间的随机数。

$number = mt_rand(1, 3000)

例如,这将返回 2700。我希望它比 3000 更接近 1。

我应该如何实现一个只有 10% 的机会接近 3000 的函数?

【问题讨论】:

  • 你能解释一下“接近3000”吗?是“2500-3000”还是“2900-3000”?
  • 更有可能获得尽可能小的数量(假设范围为 1-100),但仍有 10% 的机会获得接近 3000(范围为 1000-3000)。
  • 问题是你如何划分范围......究竟什么是“接近 3000”(你仍然没有回答这个问题)
  • 好的。所以我大部分时间应该将范围设置为 1 - 100。但仍有 10% 的机会将范围设为 1 - 3000。
  • 定义“接近 3000”?这条曲线是对称的,像钟形曲线吗?很难为模糊的问题陈述设计一个具体的解决方案。您应该尝试更清楚地定义您的术语。

标签: php math random numbers probability


【解决方案1】:

根据问题上的 cmets,您可以使用 mt_rand 函数两次。首先 - 检查它是否应该是 90%(其中值是 1-100 的随机值),如果不是 - 它是另一个 10%,其中值是 1-3000 的随机值:

$number = mt_rand(0, 9) == 0 ? mt_rand(1, 3000) : mt_rand(1, 100);

【讨论】:

  • 好主意。非常感谢。
猜你喜欢
  • 2011-04-10
  • 1970-01-01
  • 2017-11-26
  • 2013-12-18
  • 2020-07-13
  • 2018-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多