每天增加机会

问题描述 投票:0回答:1

我正在尝试创建一个随机性脚本,以增加每一天返回 true 的机会。

例如 1 月 1 日,成真的几率应该约为 1:12

12 月 31 日,实现的几率应该是 1:1。

我对脚本的第一次尝试只是使用 date('F') - 12 并使用 abs() 来反转任何负数。然而,这导致每个月的机会明显增加。相反,我想每天增加一次机会(如果可能的话,甚至每秒增加一次)。

这是我想出的,但我不确定我的逻辑是否正确以及是否有更好的方法:

$day = date("z");

$max = abs($day - 365)/30;

$rand = rand(0,$max);

if ($rand == 0)
{
    return true;
}
php random
1个回答
0
投票

您可以使用两个日期的unix时间戳,这样您的精度就会以秒为单位。

// Current date timestamp in seconds
$day = time();
// End of Dec 31 timestamp in seconds
$endOfYear = strtotime(date('Y') . '-12-31 23:59:59');

// Closer to end of year, smaller range to select
$max = max(0, $endOfYear - $day);

$rand = rand(0, $max);

return $rand == 0;
© www.soinside.com 2019 - 2024. All rights reserved.