用PHP代码进行扭蛋操作
由于我回想起了几年前每隔一周实施扭蛋活动的时候,所以我将基本的想法总结如下。
在过去,我们按照每两周一次的发布时间来进行发布,每次发布的时候我都感到紧张不已。我认为,最好将排出率设置等基本设定放在单独的文件中,以便其他非工程师人员也能进行编辑(可能是为了工程师可以推卸责任的意义)。
扭蛋逻辑
回想起那个时候,我将其写下来。
在获取随机数的方法中,有shuffle、rand和mt_rand(作为旧rand的替代品)等选项,但从PHP7开始,似乎又新增了一个准确度更高的random_int函数,我们可以尝试使用它。
我们参考了《Love Live! 学园偶像祭》的排名率。
UR: 1%
SSR: 4%
SR: 15%
R: 80%
$weight_list = [
'UR' => 1,
'SSR' => 4,
'SR' => 15,
'R' => 80,
];
$result_number = random_int(1, array_sum($weight_list));// 1~100
$total_weight = 0;
foreach ($weight_list as $name => $weight)
{
$total_weight += $weight;
if ($result_number <= $total_weight)
{
$result = $name;
break;
}
}
var_dump($result);
闲话不多
在A百分比中的B百分比这样的情况下,如果根据稀有度对每个物品或卡片进行了加权,那么我认为可以进一步抽取根据稀有度分组的扭蛋。
当涉及到实际运营时,我们可以将各个物品的掉落率以csv或json等格式进行记录,以便任何人都能编辑。然后,在实施过程中,我们创建一个数组,其中物品和卡片的ID作为键,并在逻辑层次上进行调整,使掉落率成为整数值,最后完成实施。
如果物品ID为1001的出现率是0.0003的话
$weight_list = [
1001 => 3
]
random_int(1, 10000);
如果中奖号码是1001的话,就像是给予它那样。