麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發(fā) > PHP > 正文

PHP抽獎算法程序代碼分享

2024-05-04 23:39:27
字體:
供稿:網(wǎng)友

這篇文章主要分享了PHP抽獎算法程序設(shè)計,抽獎在日常生活中大家都會接觸到,用php如何實現(xiàn)抽獎算法,需要了解的朋友可以參考一下

抽獎算法需要滿足的需求如下:

1.可以控制中獎的概率

2.具有隨機性

3.最好可以控制獎品的數(shù)量

4.根據(jù)用戶ID或者ip、手機號、QQ號等條件限制抽獎次數(shù)

初期就這些需求,然后根據(jù)網(wǎng)上的資料,采用了一種階段式抽取的方法,大家下面看一下整體的程序:

該程序是在ThinkPHP框架下完成的,使用了一些框架自帶的類庫和函數(shù),下面我會逐一進行說明,控制器部分:

代碼如下

 

 
  1. <?php 
  2.  
  3. /** 
  4.  
  5. * 
  6. * @lanfengye <[email protected]> 
  7. */ 
  8. class ChoujiangAction extends Action { 
  9. //抽獎的開始時間 
  10. var $begin_time="2012-12-25 14:00:00"//開始時間 0-不限制 
  11. //抽獎的結(jié)束時間 
  12. var $stop_time="0"//結(jié)束時間 0-不限制 
  13.  
  14. //本次抽獎的獎項信息,必須按照從大到小的順序進行填寫,id為獎次,prize為中獎信息,v為中獎概率,num為獎品數(shù)量 
  15. //需要注意的是,該處也必須包含不中獎的信息,概率從小到大進行排序 
  16. var $prize_arr = array( 
  17. '0' => array('id' => 1, 'prize' => '44元購買1G/年空間''v' => 1,'num'=>1), 
  18. '1' => array('id' => 2, 'prize' => '55元購買1G/年空間''v' => 2,'num'=>2), 
  19. '2' => array('id' => 3, 'prize' => '66元購買1G/年空間''v' => 5,'num'=>2), 
  20. '3' => array('id' => 4, 'prize' => '77元購買1G/年空間''v' => 10,'num'=>3), 
  21. '4' => array('id' => 5, 'prize' => '88元購買1G/年空間''v' => 15,'num'=>4), 
  22. '5' => array('id' => 6, 'prize' => '99元購買1G/年空間''v' => 67,'num'=>10), 
  23. ); 
  24.  
  25.  
  26. //首頁顯示方法  
  27. public function index(){ 
  28. //連接數(shù)據(jù)庫,去獲取本次中獎的人員名單 
  29. $Choujiang=M('Choujiang'); 
  30. $this->assign('list', $Choujiang->where("rid>0")->order('id desc')->select()); 
  31. unset($Choujiang); 
  32.  
  33. //在首頁中顯示抽獎的開始時間 
  34. $this->assign('begin_time',$this->begin_time); 
  35.  
  36. $this->display(); 
  37.  
  38.  
  39.  
  40. /** 
  41. * 生成中獎信息,ajax進行請求該方法,需要客戶填寫QQ號碼 
  42. */ 
  43. public function make() { 
  44. $qq_no= trim($_POST['qq_no']); 
  45. import('ORG.Util.Input'); 
  46. $qq_no=Input::getVar($qq_no); 
  47.  
  48. if(empty($qq_no)){ 
  49. $this->ajaxReturn(1, '請正確填寫QQ號碼!'); 
  50. exit; 
  51.  
  52. if(!empty($this->begin_time) && time()<strtotime($this->begin_time)){ 
  53. $this->ajaxReturn(1, '抽獎還沒有開始,開始時間為:'.$this->begin_time); 
  54. exit; 
  55.  
  56. if(!empty($this->stop_time) && time()>strtotime($this->stop_time)){ 
  57. $this->ajaxReturn(1, '本次抽獎已經(jīng)結(jié)束,結(jié)束時間為:'.$this->stop_time); 
  58. exit; 
  59.  
  60. //獲取獎項信息數(shù)組,來源于私有成員 
  61. $prize_arr= $this->prize_arr; 
  62.  
  63. foreach ($prize_arr as $key => $val) { 
  64. $arr[$val['id']] = $val['v']; 
  65. //$rid中獎的序列號碼 
  66. $rid = $this->get_rand($arr); //根據(jù)概率獲取獎項id 
  67.  
  68. $str = $prize_arr[$rid - 1]['prize']; //中獎項  
  69.  
  70. $Choujiang=M('Choujiang'); 
  71.  
  72. //從數(shù)據(jù)庫中獲取特定QQ號已經(jīng)參加抽獎的次數(shù),如果大于等于3則提示次數(shù)用完 
  73. if($Choujiang->where("qq_no='{$qq_no}'")->count()>=3){ 
  74. $str='您3次抽獎機會已經(jīng)用完!'
  75. $rid=0; 
  76. //從數(shù)據(jù)庫中獲取特定獎項序號的次數(shù),大于等于設(shè)置的最大次數(shù)則提示獎品被抽完,如果需要一直中最后一個紀念獎,則修改該處即可 
  77. }elseif ($Choujiang->where("rid={$rid}")->count()>=$prize_arr[$rid-1]['num']) { 
  78. $str='很抱歉,您所抽中的獎項已經(jīng)中完!'
  79. $rid=0; 
  80. //生成一個用戶抽獎的數(shù)據(jù),用來記錄到數(shù)據(jù)庫 
  81. $data=array( 
  82. 'rid'=>$rid, 
  83. 'pop'=>$str, 
  84. 'qq_no'=>$qq_no, 
  85. 'input_time'=>time() 
  86. ); 
  87. //將用戶抽獎信息數(shù)組寫入數(shù)據(jù)庫 
  88.  
  89. $Choujiang->add($data); 
  90. unset($Choujiang); 
  91.  
  92. //ajax返回信息 
  93. $this->ajaxReturn(1, $str); 
  94.  
  95. /** 
  96. * 根據(jù)概率獲取中獎號碼 
  97. */ 
  98. private function get_rand($proArr) { 
  99. $result = ''
  100. //概率數(shù)組的總概率精度  
  101. $proSum = array_sum($proArr); 
  102. //概率數(shù)組循環(huán)  
  103. foreach ($proArr as $key => $proCur) { 
  104. $randNum = mt_rand(1, $proSum); 
  105. if ($randNum <= $proCur) { 
  106. $result = $key; 
  107. break
  108. else { 
  109. $proSum -= $proCur; 
  110. unset($proArr); 
  111. return $result; 
  112.  
  113. }  
  114. ?> 

該算法簡單使用,并發(fā)訪問性能非常好,稍加改動就可以用于各種場合,結(jié)合用戶登錄等信息可有效控制每個人的抽獎次數(shù)。將開始和結(jié)束之間更改為數(shù)組,就可以完善成為每天特定時間抽獎的程序。

希望大家可以結(jié)合有關(guān)php抽獎程序的文章進行深入學(xué)習(xí),更好的掌握這門語言的應(yīng)用技巧。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 草久视频在线观看 | 成人黄色网战 | 中文字幕伦乱 | 成人视屏在线观看 | 欧美一级淫片免费视频黄 | 爱草成年 | 国产免费资源 | 欧美成人性生活 | 国产一区毛片 | 久久久久久久久久美女 | 欧日韩在线视频 | 国产一区二区三区四区五区加勒比 | 欧美va亚洲 | h视频免费在线 | 免费黄色在线观看网站 | 亚洲一区免费观看 | 欧美成人免费一级 | 成人h视频在线 | 92看片淫黄大片欧美看国产片 | 一级做受毛片免费大片 | qyl在线视频精品免费观看 | 在线播放亚洲精品 | 色综合久久久久久久久久久 | 黄色毛片一级视频 | 国产精品久久久久久婷婷天堂 | 成人影片在线免费观看 | 在线中文字幕网站 | 精品一区二区6 | 国产一区二区三区在线观看视频 | av在线免费看网站 | 黄色av电影在线播放 | 男女隐私免费视频 | 欧美日本中文字幕 | 日韩黄站 | 日本黄色一级电影 | 日韩精品久久久 | 国产女王女m视频vk 中文日韩 | 欧日韩在线视频 | 一级大片在线观看 | 成年人小视频在线观看 | 国产一级毛片高清视频 |