php - 在 PHP 中生成带有偏差结果的随机数

标签 php

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

这就是我的想法

[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 有更高的机会。

最佳答案

首先生成一个 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]);

关于php - 在 PHP 中生成带有偏差结果的随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9254470/

相关文章:

php - HTML 表格转为 CSV,包括分页行

php - 有没有地方可以在一个地方获取 laravel `vendor` 文件夹?

php - 如何检测mySQL数据库的分组结果是否有相关值?

php - file_put_contents 不创建 txt 文件

php - 设置默认图像

php - highcharts 从数据库表中提取数据

php - 如果元素数量小于 4 并且不为空,则创建重复元素

php - PDO::ATTR_EMULATE_PREPARES(多重绑定(bind)和限制)

php - 查询计数 codeigniter

php - Magento:如果父类别为空,则显示来自子类别的产品