找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1428|回复: 0
打印 上一主题 下一主题

php实现自定义中奖项数和概率的抽奖函数示例

[复制链接]

2600

主题

2600

帖子

7736

积分

论坛元老

Rank: 8Rank: 8

积分
7736
跳转到指定楼层
楼主
发表于 2018-2-14 05:25:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

            本文实例讲述了php实现自定义中奖项数和概率的抽奖函数。分享给大家供大家参考,具体如下:
_rate = $rate;
if (array_sum($this->_rate) > 100)//检测概率设置是否有问题
throw new Exception('Winning rate upto 100%');
if (array_sum($this->_rate) _rate[] = 100 - array_sum($this->_rate);
}
/*
* 随机生成一个1-10000的整数种子,提交给中奖判断函数
* @return int,按传入的概率排序,返回中奖的项数
*/
public function runOnce() {
return $this->judge(mt_rand(0, 10000));
}
/*
* 按所设置的概率,判断一个传入的随机值是否中奖
* @param int,$seed 10000以内的随机数
* @return int,$i 按传入的概率排序,返回中奖的项数
*/
protected function judge($seed) {
foreach ($this->_rate as $key => $value) {
$tmpArr[$key + 1] = $value * 100;
}
//将概率乘十后累计,以便随机选择,组合成
$tmpArr[0] = 0;
foreach ($tmpArr as $key => $value) {
if ($key > 0) {
$tmpArr[$key] += $tmpArr[$key - 1];
}
}
for ($i = 1; $i setRate($rate);
for ($i = 0; $i runOnce();
@$rewards[$b]++;
}
unset($rewards['']);
echo array_sum($rewards);
?>

运行10000次,对比设置概率和中奖次数
设置概率中奖次数
%
%
%
%
%
%


PS:这里再为大家提供两款功能类似的在线工具供大家参考:
在线随机数字/字符串生成工具:
http://tools.jb51.net/aideddesign/suijishu
高强度密码生成器:
http://tools.jb51.net/password/CreateStrongPassword
更多关于PHP相关内容感兴趣的读者可查看本站专题:《php字符串(string)用法总结》、《PHP数据结构与算法教程》、《php程序设计算法总结》、《php排序算法总结》、《PHP常用遍历算法与技巧总结》、《PHP数学运算技巧总结》、《PHP数组(Array)操作技巧大全》及《php常见数据库操作技巧汇总
希望本文所述对大家PHP程序设计有所帮助。
            
            
您可能感兴趣的文章:
  • php中通过数组进行高效随机抽取指定条记录的算法
  • php实现可以设置中奖概率的抽奖程序代码分享
  • 适用于抽奖程序、随机广告的PHP概率算法实例
  • php编写的抽奖程序中奖概率算法
  • 基于PHP代码实现中奖概率算法可用于刮刮卡、大转盘等抽奖算法
  • php实现概率性随机抽奖代码
  • php抽奖概率算法(刮刮卡,大转盘)
  • 微信随机生成红包金额算法php版
  • 微信红包随机生成算法php版
  • PHP编程实现计算抽奖概率算法完整实例
            
  • 分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    用户反馈
    客户端