【问题标题】:Generate a random number with bias result in PHP在 PHP 中生成带有偏差结果的随机数
【发布时间】:2012-02-13 01:20:17
【问题描述】:

我目前正在为我维护的网站编写积分系统,并且我想每天奖励我的用户随机数量的积分。

这就是我的想法

[0-25] has a 75% chance 
[26 - 51] has a 13% chance
[52 - 76] has a 6% chance
[77 - 115] has a 4% chance
[115 - 200 ] has a mere 2% chance

因此,点括号 0-25 有 75% 的机会生成,因此最有可能是生成的。

如果有人有任何想法或建议,很高兴听到他们。

所以,基本上我希望生成一个随机数,1-200,我希望 0-25 比 115-200 有更高的机会。

【问题讨论】:

  • 寻找相同的东西 :D 现在我正在为每个部门做数组,一个 rand 来选择一个部门,然后第二个来选择所选部门中的一个数字
  • 但我没有得到你的百分比:S,总和应该是 100% 没有?
  • 这正是我想要的,百分比肯定会改变,但是它就像一个货币系统,我不希望它很容易从 115-200 积分中获得很容易,我喜欢它是一种罕见的情况!
  • 如何一个元素出现 80% 的时间,而另一个元素出现 50% 的时间,并且是互斥的?

标签: php


【解决方案1】:

首先生成一个介于 0 到 99 之间的随机数。然后在第一个选择的范围内生成第二个随机数。

$ranges = Array(
    Array(0,25,75), // [0-25] on 75% chance
    Array(26,51,13),
    Array(52,76,6),
    Array(77,115,4),
    Array(115,200,2)
);
$sel = rand(0,99);
do {
    $pick = array_shift($ranges);
    $sel -= $pick[2];
} while($pick && $sel >= 0);
$random = rand($pick[0],$pick[1]);

【讨论】:

  • 这正是我要找的,非常感谢我真的很感激!
  • 以及我的建议:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-31
  • 2012-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-01
相关资源
最近更新 更多