专栏首页编程学习园地php简单中奖算法(实例)

php简单中奖算法(实例)

/

/ 今天遇到这样的一个问题  封装一个 抽奖概率函数 思前想后去网上找点资料吧,而且不止一种方法 这种我感觉还是比较容易的 还是那句话 实现功能的思路不止一种 代码也不止一种。

function get_rand($proArr) {

$result = '';

//概率数组的总概率精度

$proSum = array_sum($proArr);

//概率数组循环

foreach ($proArr as $key => $proCur) {

$randNum = mt_rand(1, $proSum);

if ($randNum <= $proCur) {

$result = $key;

break;

} else {

$proSum -= $proCur;

}

}

unset ($proArr);

return $result;

}

$prize_arr = array(

'0' => array('id'=>1,'prize'=>'平板电脑','v'=>0.1),

'1' => array('id'=>2,'prize'=>'数码相机','v'=>5),

'2' => array('id'=>3,'prize'=>'音箱设备','v'=>10),

'3' => array('id'=>4,'prize'=>'4G优盘','v'=>12),

'4' => array('id'=>5,'prize'=>'10Q币','v'=>22),

'5' => array('id'=>6,'prize'=>'下次没准就能中哦','v'=>50),

);

foreach ($prize_arr as $key => $val) {

$arr[$val['id']] = $val['v'];

}

$rid = get_rand($arr); //根据概率获取奖项id

/

/$res['yes'] = $prize_arr$rid-1; //中奖项

unset($prize_arr[$rid-1]); //将中奖项从数组中剔除,剩下未中奖项

shuffle($prize_arr); //打乱数组顺序

for($i=0;$i<count($prize_arr);$i++){

$pr[] = $prize_arr$i;

}

$res['no'] = $pr;

echo json_encode($res,JSON_UNESCAPED_UNICODE);

以上这篇php简单中奖算法(实例)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

原文链接:https://www.blog.zirun.me.com/php/4669.html

我来说两句

0 条评论
登录 后参与评论

相关文章

  • php简单中奖算法(实例)

    /【本文中一些MYSQL版本可能是以前的,MYSQL建议使用5.7以上的版本】/ 今天遇到这样的一个问题  封装一个 抽奖概率函数 思前想后去网上找点资料吧,而...

    用户2323866
  • PHP递归算法的简单实例

    递归函数为自调用函数,在函数体内直接或直接自个调用自个,但需求设置自调用的条件,若满意条件,则调用函数自身,若不满意则停止本函数的自调用,然后把目前流程的主控权...

    砸漏
  • php简单计算权重的方法示例【适合抽奖类应用】

    在线随机数字/字符串生成工具: http://tools.zalou.cn/aideddesign/suijishu

    砸漏
  • 简单算法杂例

    第一:如果B栈为空,那么将A中的所有元素依次弹出后放入B栈中(负负为正,FILO顺序颠倒,再颠倒依次就为原始的顺序),此时B栈中已经有了元素,弹出的方式见“第二...

    大学里的混子
  • php进行md5加密简单实例方法

    把这段密文分割成若干段,对每段都进行一次MD5运算,然后把这堆密文连成一个超长的字符串,最后再进行一次MD5运算,得到仍然是长度为32位的密文。

    砸漏
  • PHP实现大转盘抽奖算法

    本文通过具体的实例向大家介绍了PHP语言实现大转盘抽奖算法,希望对大家学习PHP抽奖有所帮助。

    猿哥
  • PHP 对象接口简单实现方法示例

    使用接口(interface),可以指定某个类必须实现哪些方法,但不需要定义这些方法的具体内容。

    砸漏
  • PHP多进程简单实例小结

    PHP创建多进程需要使用到pcntl模块 在编译时加上–enable-pcntl打开进程控制支持,不是Unix类系统不支持此模块

    砸漏
  • PHP命名空间简单用法示例

    有三个文件,分别是space1.php,space2.php,use.php吧,在同一目录里。

    砸漏
  • PHP回调函数简单用法示例

    php中提供了两个内置的回调函数call_user_func()、call_user_func_array()。

    砸漏
  • php实现推荐功能的简单实例

    利用similar_text将这些文章标题同原文章标题做对比,按标题的相似程度重新排列标题,就得到了与原文章相似的文章列表。

    砸漏
  • php实现登录页面的简单实例

    开始自然是从最简单的功能起步,我第一个任务选择了做一个登录操作,其实也没想象中那么简单。

    砸漏
  • PHP session用法其实很简单

    PHP session用法其实很简单它可以把用户提交的数据以全局变量形式保存在一个session中并且会生成一个唯一的session_id,这样就是为了多了不会...

    砸漏
  • 世界上最难学的编程语言,C语言只排第三,第一你绝对想不到!

    本次参与最难学编程语言排名的选手我从以上榜单中筛选了10位大家比较熟知的,他们分别是:Java、C、Python、C++、.NET、JavaScript、PHP...

    小林C语言
  • PHP实现的贪婪算法实例

    本文实例讲述了PHP实现的贪婪算法。分享给大家供大家参考,具体如下: 背景介绍:贪婪算法与数据结构知识库算法可以说是离我们生活最近的一种算法,人总是贪婪的嘛,所...

    用户2323866
  • Python tkinter实现简单加法计算器代码实例

    tkinter 是 Python 的标准 GUI 库。Python 使用 tkinter 可以快速的创建 GUI 应用程序。由于 tkinter 是内置到 py...

    砸漏
  • PHP面向对象多态性实现方法简单示例

    本文实例讲述了PHP面向对象多态实现方法。分享给大家供大家参考,具体如下: 多态:父类引用指向子类对象(面向对象中能够根据使用类的上下文(使用输入不同的类调用不...

    用户2323866
  • 最难学的十大编程语言 Java排第三 它竟是第一名!

    编程语言是开发者们代码工作的核心,也是许多开发者最爱讨论的话题。编程语言的选择对开发者和工具制造商都十分重要,前者需要保持最新和具备市场潜力的技能,后者则亟需确...

    老九君
  • php数值计算num类简单操作示例

    ceil(float $value);//返回不小于 value 的下一个整数,value 如果有小数部分则进一位

    砸漏

扫码关注云+社区

领取腾讯云代金券