如何用PHP和jQuery编写一个长尾词的抽奖程序?
- 内容介绍
- 文章标签
- 相关推荐
本文共计235个文字,预计阅读时间需要1分钟。
php遍历奖项数组并计算每个奖项的概率:php$prize_arr=[ ['id'=> 1, 'num'=> 50, 'v'=> '奖1'], ['id'=> 2, 'num'=> 30, 'v'=> '奖2'], ['id'=> 3, 'num'=> 20, 'v'=> '奖3'], ['id'=> 4, 'num'=> 10, 'v'=> '奖4']];
$total=array_sum(array_column($prize_arr, 'num'));foreach ($prize_arr as $k=> $v) { $per=$v['num'] / $total; echo 奖项{$v['id']}的百分比为: . number_format($per * 100, 2) . %\n; $arr[$v['id']]=$per * 100; $arr[$v['id']]=$v['v'];}print_r($arr);
抽奖foreach ($prize_arr as $k=>$v) { $per = $v['num']/$total;//var_dump($v['num']); var_dump($total); print_r($per); $per = round($per*100,2);/*百分比*/ //var_dump($per); $arr[$v['id']] = $per; //$arr[$v['id']] = $v['v']; } //print_r($prize_arr); //print_r($arr); //exit; $prize_id = getRand($arr); //根据概率获取奖项id foreach($prize_arr as $k=>$v){ //获取前端奖项位置 if($v['id'] == $prize_id){ $prize_site = $k; break; } } $res = $prize_arr[$prize_id - 1]; //中奖项 //var_dump($res); $data['prize_name'] = $res['prize']; $data['prize_site'] = $prize_site;//前端奖项从-1开始 $data['prize_id'] = $prize_id; echo json_encode($data); function getRand($proArr) { $data = ''; $proSum = array_sum($proArr); //概率数组的总概率精度 foreach ($proArr as $k => $v) { //概率数组循环 $randNum = mt_rand(1, $proSum); if ($randNum <= $v) { $data = $k; break; } else { $proSum -= $v; } } unset($proArr); return $data; } lottery.zip lottery.zip
本文共计235个文字,预计阅读时间需要1分钟。
php遍历奖项数组并计算每个奖项的概率:php$prize_arr=[ ['id'=> 1, 'num'=> 50, 'v'=> '奖1'], ['id'=> 2, 'num'=> 30, 'v'=> '奖2'], ['id'=> 3, 'num'=> 20, 'v'=> '奖3'], ['id'=> 4, 'num'=> 10, 'v'=> '奖4']];
$total=array_sum(array_column($prize_arr, 'num'));foreach ($prize_arr as $k=> $v) { $per=$v['num'] / $total; echo 奖项{$v['id']}的百分比为: . number_format($per * 100, 2) . %\n; $arr[$v['id']]=$per * 100; $arr[$v['id']]=$v['v'];}print_r($arr);
抽奖foreach ($prize_arr as $k=>$v) { $per = $v['num']/$total;//var_dump($v['num']); var_dump($total); print_r($per); $per = round($per*100,2);/*百分比*/ //var_dump($per); $arr[$v['id']] = $per; //$arr[$v['id']] = $v['v']; } //print_r($prize_arr); //print_r($arr); //exit; $prize_id = getRand($arr); //根据概率获取奖项id foreach($prize_arr as $k=>$v){ //获取前端奖项位置 if($v['id'] == $prize_id){ $prize_site = $k; break; } } $res = $prize_arr[$prize_id - 1]; //中奖项 //var_dump($res); $data['prize_name'] = $res['prize']; $data['prize_site'] = $prize_site;//前端奖项从-1开始 $data['prize_id'] = $prize_id; echo json_encode($data); function getRand($proArr) { $data = ''; $proSum = array_sum($proArr); //概率数组的总概率精度 foreach ($proArr as $k => $v) { //概率数组循环 $randNum = mt_rand(1, $proSum); if ($randNum <= $v) { $data = $k; break; } else { $proSum -= $v; } } unset($proArr); return $data; } lottery.zip lottery.zip

