PHP编程实现计算抽奖概率算法完整实例

 更新时间:2017年08月09日 12:18:57   作者:风火程序员  
这篇文章主要介绍了PHP编程实现计算抽奖概率算法,结合完整实例形式分析了php随机数运算相关操作技巧,需要的朋友可以参考下

本文实例讲述了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'=>2),
 '1' => array('id'=>2,'prize'=>'数码相机','v'=>5),
 '2' => array('id'=>3,'prize'=>'iPad','v'=>13),
 '3' => array('id'=>4,'prize'=>'LED显示器','v'=>15),
 '4' => array('id'=>5,'prize'=>'U盘','v'=>25),
 '5' => array('id'=>6,'prize'=>'键盘','v'=>30),
 '6' => array('id'=>7,'prize'=>'鼠标垫','v'=>10),
 );
 foreach ($prize_arr as $key => $val) {
 $arr[$val['id']] = $val['v'];
 }
 $rid = get_rand($arr);
 $res['yes'] = $prize_arr[$rid-1]['prize'];
 unset($prize_arr[$rid-1]);
 shuffle($prize_arr);
 $prize_arrcount = count($prize_arr);
 for($i=0;$i<$prize_arrcount;$i++){
 $pr[] = $prize_arr[$i]['prize'];
 }
 $res['no'] = $pr;
 //抽奖结果
 $ro = $res['yes'];
 print_r($ro);
?>

运行结果:

iPad

PS:这里再为大家提供两款功能类似的在线工具供大家参考:

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

在线随机字符/随机密码生成工具:
http://tools.jb51.net/aideddesign/rnd_password

在线随机数生成工具:
http://tools.jb51.net/aideddesign/rnd_num

高强度密码生成器:
http://tools.jb51.net/password/CreateStrongPassword

更多关于PHP相关内容感兴趣的读者可查看本站专题:《php字符串(string)用法总结》、《PHP数据结构与算法教程》、《php程序设计算法总结》、《PHP数组(Array)操作技巧大全》、《PHP常用遍历算法与技巧总结》及《PHP数学运算技巧总结

希望本文所述对大家PHP程序设计有所帮助。

相关文章

  • 如何使用php等比例缩放图片

    如何使用php等比例缩放图片

    主要介绍了如何使用php等比例缩放图片,可以对原图片提出缩放要求的宽度、缩放的长度.
    2016-10-10
  • 基于PHP array数组的教程详解

    基于PHP array数组的教程详解

    本篇文章是对PHP中的array数组进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • php实现简单文件下载的方法

    php实现简单文件下载的方法

    这篇文章主要介绍了php实现简单文件下载的方法,以实例形式简单分析了文件下载的原理与实现技巧,非常简单实用,需要的朋友可以参考下
    2015-01-01
  • php中通过DirectoryIterator删除整个目录的方法

    php中通过DirectoryIterator删除整个目录的方法

    这篇文章主要介绍了php中通过DirectoryIterator删除整个目录的方法,实例分析了php通过DirectoryIterator类操作目录的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • PHP时间戳和日期相互转换操作实例小结

    PHP时间戳和日期相互转换操作实例小结

    这篇文章主要介绍了PHP时间戳和日期相互转换操作,结合实例形式总结分析了php常见的各种日期与时间戳转换操作使用技巧与注意事项,需要的朋友可以参考下
    2018-12-12
  • php桥接模式应用案例分析

    php桥接模式应用案例分析

    这篇文章主要介绍了php桥接模式应用,结合具体案例形式分析了php桥接模式原理及信息发送相关应用技巧,需要的朋友可以参考下
    2019-10-10
  • PHP过滤器的实现方法

    PHP过滤器的实现方法

    要想在PHP中实现一个类似过滤器的功能,因为我的需求是这样的,有个开发好了的OA系统,要集成到我们的应用中,OA要对外来的数据进行过滤,在给自己处理。
    2010-07-07
  • 高质量PHP代码的50个实用技巧必备(下)

    高质量PHP代码的50个实用技巧必备(下)

    这篇文章主要为大家分享了50个高质量PHP代码的实用技巧,大家必备的php实用代码,感兴趣的小伙伴们可以参考一下
    2016-01-01
  • JavaScript+PHP实现视频文件分片上传的示例代码

    JavaScript+PHP实现视频文件分片上传的示例代码

    这篇文章主要介绍了基于JavaScript+PHP实现视频文件分片上传,视频文件分片上传,整体思路是利用JavaScript将文件切片,然后循环调用上传接口 upload.php 将切片上传到服务器,文中有详细代码供大家参考,需要的朋友可以参考下
    2024-02-02
  • php中文乱码和html中文乱码的解决方案

    php中文乱码和html中文乱码的解决方案

    这篇文章主要介绍了php中文乱码和html中文乱码的解决方案,文中通过代码示例给大家详细的介绍了乱码原因和解决方案,并具有一定的参考价值,需要的朋友可以参考下
    2023-12-12

最新评论