0
点赞
收藏
分享

微信扫一扫

抽奖咯


这个是最经典的抽奖算法,很好用的哦

<?php

// 准备奖品池
// weight代表奖品权重 权重越大被抽到的可能性也就越大
// 可以在后台进行设置
// 如果不希望该奖品被抽到 权重可以给设置成0
$rewardOptions = array(
array('id' => 1, 'name' => '橙武', 'weight' => 1),
array('id' => 2, 'name' => '紫武', 'weight' => 5),
array('id' => 3, 'name' => '蓝武', 'weight' => 1),
array('id' => 4, 'name' => '绿武', 'weight' => 1),
array('id' => 5, 'name' => '白武', 'weight' => 1),
);

// 获取抽到的奖品ID
$rewardId = getRewardId($rewardOptions);
// 得到奖品ID 进行相关业务操作
// .....
// 展示对应的奖品
echo $rewardOptions[$rewardId - 1]['name'];


//方法 getRewardId(奖品池, 随机数开始值(中奖权重的最小值))
function getRewardId($arr, $start = 1) {
// 计算总权重
//array_column($arr, 'weight')获取数组中的weight组成新的数组
//array_sum计算数组和
$totalWeight = array_sum(array_column($arr, 'weight'));
foreach($arr as $k => $v) {
// 判断权重和随机数的对比得出,是否抽中,随机数的开始值建议也变成一个随机数相对公平
$random = mt_rand($start, $totalWeight);
if($random <= $v['weight']) {
return $v['id'];
} else {
$totalWeight -= $v['weight'];
}
}
}

抽奖的功能分析

活动管理(不同活动的管理)
活动奖品管理(奖品图片,权重,名称等的管理)
中奖记录管理(核实发放中奖,中奖记录)
用户管理
用户登录
用户抽奖


举报

相关推荐

今天回家咯~~

HDU 2021 发工资咯

明天去订票,准备回家咯~~

抽奖 算法

java抽奖器

PHP抽奖算法

简单的抽奖

0 条评论