PHP 抽奖demo

这篇博客介绍了如何使用PHP来实现一个简单的抽奖程序,涵盖了核心的逻辑和代码实现。
摘要由CSDN通过智能技术生成

PHP 抽奖demo

<?php

/**
 * 根据概率获取奖项ID
 * @param proArr array 以奖品id为key,概率为value的数组
 * @return $result 中奖奖品id
 */
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; 
} 


//1. 从数据库读奖品概率
$prize_arr = array( 
  '0' => array('id'=>1,'prize'=>'平板电脑','v'=>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), 
); 



//2. 提取奖品ID对应的概率数组
 foreach ($prize_arr as $key => $val) { 
   $arr[$val['id']] = $val['v']; 
 } //["1"=>1,"2"=>5,"3"=>10,"4"=>12,"5"=>22,"6"=>50]

//3. 获取是否中奖
 $rid = get_rand($arr); //根据概率获取奖项id 
 $res['yes'] = $prize_arr[$rid-1]['prize']; //中奖项 
 unset($prize_arr[$rid-1]); //将中奖项从数组中剔除,剩下未中奖项 
 shuffle($prize_arr); //打乱数组顺序 
 for($i=0;$i<count($prize_arr);$i++){ 
   $pr[] = $prize_arr[$id]['prize']; 
 } 
 $res['no'] = $pr; 
 echo json_encode($res);
?>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值