本文实例讲述了php随机抽奖用法。分享给大家供大家参考。具体分析如下:
1. 按照设定的概率,得到随机抽奖的结果。 复制代码 代码如下:<?php /** * 抽奖工具 */class lottery_tool { protected static $awardsArr; protected static $proField = "probability"; protected static $proSum = 0; protected static $checkAward = false; const SUCCESS_CODE = 0; const FAIL_CODE = -1; //检查抽奖数据 protected static function checkAwards(){ if (!is_array(self::$awardsArr) || empty(self::$awardsArr)) { return self::$checkAward = false; } self::$proSum = 0; foreach (self::$awardsArr as $_key => $award) { self::$proSum += $award[self::$proField]; } if (empty(self::$proSum)) { return self::$checkAward = false; } return self::$checkAward = true; } protected static function successRoll($rollKey){ return array("code" => self::SUCCESS_CODE, "roll_key" => $rollKey, "msg" => "roll success"); } protected static function failRoll($msg = "roll fail"){ return array("code" => self::FAIL_CODE, "msg" => $msg ); } //抽奖 public static function roll () { if (false == self::$checkAward) { return self::failRoll("awards data is not the right format!"); } $result = mt_rand(0, self::$proSum); $proValue = 0; foreach (self::$awardsArr as $_key => $value) { $proValue += $value[self::$proField]; if ($result <= $proValue) { return self::successRoll($_key); } } return self::failRoll("wrong"); } //改变概率字段名 public static function setProField($field = null) { if (!empty($field)) { self::$proField = $field; } } //设置奖品 public static function setAwards($awards){ self::$awardsArr = $awards; self::checkAwards(); }}2. 示例代码:复制代码 代码如下:$awards = array( "0" => array("pro" => 15, "info" => "15%的可能性"), "1" => array("pro" => 25, "info" => "25%的可能性"), "2" => array("pro" => 40, "info" => "40%的可能性"), "3" => array("pro" => 20, "info" => "20%的可能性"), );lottery_tool::setProField("pro");lottery_tool::setAwards($awards);$result = array();for ($i = 10000; $i --;) { $result[] = lottery_tool::roll();}foreach ($result as $key => $value) { $awards[$value["roll_key"]]["num"] ++;}echo "<pre>";var_dump($awards);
运行结果如下:复制代码 代码如下:array 0 => array "pro" => int 15 "info" => string "15%的可能性" (length=15) "num" => int 1596 1 => array "pro" => int 25 "info" => string "25%的可能性" (length=15) "num" => int 2484 2 => array "pro" => int 40 "info" => string "40%的可能性" (length=15) "num" => int 3939 3 => array "pro" => int 20 "info" => string "20%的可能性" (length=15) "num" => int 1981
希望本文所述对大家的php程序设计有所帮助。