亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 1824 | 回復(fù): 1
打印 上一主題 下一主題

隨機(jī)抽獎(jiǎng)php [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2015-06-30 09:44 |只看該作者 |倒序?yàn)g覽
按照設(shè)定的概率,得到隨機(jī)抽獎(jiǎng)的結(jié)果。
  1. <?php
  2. /**
  3. * 抽獎(jiǎng)工具
  4. */
  5. class lottery_tool {

  6.     protected static $awardsArr;
  7.     protected static $proField = 'probability';
  8.     protected static $proSum = 0;
  9.     protected static $checkAward = false;

  10.     const SUCCESS_CODE = 0;
  11.     const FAIL_CODE = -1;

  12.     //檢查抽獎(jiǎng)數(shù)據(jù)
  13.     protected static function checkAwards(){

  14.         if (!is_array(self::$awardsArr) || empty(self::$awardsArr)) {
  15.             return self::$checkAward = false;
  16.         }
  17.          
  18.         self::$proSum = 0;

  19.         foreach (self::$awardsArr as $_key => $award) {
  20.             self::$proSum += $award[self::$proField];
  21.         }

  22.         if (empty(self::$proSum)) {
  23.             return self::$checkAward = false;
  24.         }

  25.         return self::$checkAward = true;
  26.     }
  27.   
  28.     protected static function successRoll($rollKey){
  29.         return array('code' => self::SUCCESS_CODE, 'roll_key' => $rollKey, 'msg' => 'roll success');
  30.     }

  31.     protected static function failRoll($msg = 'roll fail'){
  32.         return array('code' => self::FAIL_CODE, 'msg' => $msg );
  33.     }

  34.     //抽獎(jiǎng)
  35.     public static function roll () {

  36.         if (false == self::$checkAward) {
  37.             return self::failRoll('awards data is not the right format!');
  38.         }

  39.         $result = mt_rand(0, self::$proSum);
  40.         $proValue = 0;

  41.         foreach (self::$awardsArr as $_key => $value) {
  42.             $proValue += $value[self::$proField];
  43.             if ($result <= $proValue) {
  44.                 return self::successRoll($_key);
  45.             }
  46.         }
  47.         return self::failRoll('wrong');
  48.     }

  49.     //改變概率字段名
  50.     public static function setProField($field = null) {
  51.         if (!empty($field)) {
  52.             self::$proField = $field;
  53.         }
  54.     }

  55.     //設(shè)置獎(jiǎng)品
  56.     public static function setAwards($awards){
  57.         self::$awardsArr = $awards;
  58.         self::checkAwards();
  59.     }
  60. }
復(fù)制代碼
forexample
  1. $awards = array(
  2.     '0' => array('pro' => 15, 'info' => '15%的可能性'),
  3.     '1' => array('pro' => 25, 'info' => '25%的可能性'),
  4.     '2' => array('pro' => 40, 'info' => '40%的可能性'),
  5.     '3' => array('pro' => 20, 'info' => '20%的可能性'),
  6.     );

  7. lottery_tool::setProField('pro');
  8. lottery_tool::setAwards($awards);

  9. $result = array();

  10. for ($i = 10000; $i --;) {
  11.     $result[] = lottery_tool::roll();
  12. }

  13. foreach ($result as $key => $value) {
  14.     $awards[$value['roll_key']]['num'] ++;
  15. }

  16. echo '<pre>';
  17. var_dump($awards);
  18. //結(jié)果:
  19. array
  20.   0 =>
  21.     array
  22.       'pro' => int 15
  23.       'info' => string '15%的可能性' (length=15)
  24.       'num' => int 1596
  25.   1 =>
  26.     array
  27.       'pro' => int 25
  28.       'info' => string '25%的可能性' (length=15)
  29.       'num' => int 2484
  30.   2 =>
  31.     array
  32.       'pro' => int 40
  33.       'info' => string '40%的可能性' (length=15)
  34.       'num' => int 3939
  35.   3 =>
  36.     array
  37.       'pro' => int 20
  38.       'info' => string '20%的可能性' (length=15)
  39.       'num' => int 1981
復(fù)制代碼

論壇徽章:
59
2015七夕節(jié)徽章
日期:2015-08-24 11:17:25ChinaUnix專家徽章
日期:2015-07-20 09:19:30每周論壇發(fā)貼之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38榮譽(yù)版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年紀(jì)念徽章
日期:2015-07-20 11:05:27IT運(yùn)維版塊每日發(fā)帖之星
日期:2015-07-20 11:05:34操作系統(tǒng)版塊每日發(fā)帖之星
日期:2015-07-20 11:05:36程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-07-20 11:05:40數(shù)據(jù)庫(kù)技術(shù)版塊每日發(fā)帖之星
日期:2015-07-20 11:05:432015年辭舊歲徽章
日期:2015-07-20 11:05:44
2 [報(bào)告]
發(fā)表于 2015-07-10 10:17 |只看該作者
不錯(cuò)。其實(shí)用VBA實(shí)現(xiàn)更好。方便。
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP