業務需求,所以做了一個簡單的原型測試,功能的主要需求是:用戶帳戶內金額越高的用戶中獎的機率就越大。
此腳本只能在命令列下使用,使用範例:
php lucky.php 100
-
/**
- * 抽獎程式
- *
- * @File: lucky.php
- * @Author: zzxworld
- * @Email: zzxworld@gmail.com
- * @Date: 2012-05 -09
- */
-
- $timer = microtime(true);
-
- /**手動配置的參數 **/
- # 獎金池大小
- $lucky_size = 1000;
- # 最高金額用戶的中獎機率,不能超過獎金池大小
- $star_user_rate = 100;
- # 一獎獎金
- $lucky_first = 100;
- # 二等獎獎金
- $lucky_second = 50;
- # 三等獎獎金
- $lucky_third = 25;
- #
- $lucky_third = 25;
- #
- # 普通獎最大金額# 普通獎最小金額
- $lucky_normal_min = 1;
-
- /**自動從系統取值的參數 **/
- # 獎金總金額
- /***/
- # 獎金總金額
- $l57
- # 擁有最多資產的使用者的帳戶金額
- $star_user_amount = 134;
-
- # 目前使用者金額
- $user_amount = isset($argv[1]) ? intval($argv[ 1]) : 0;
- if ($user_amount die('請在指令後面設定一個使用者金額.' . chr(10));
- }
-
- # 計算目前使用者中獎機率
- $user_rate = $star_user_rate/$lucky_size/$star_user_amount*$user_amount;
-
- # 依照中獎機率計算獎金個數
- $lucky_num = rateintval'user_num = rateSuser_num = rateintval; lucky_size);
-
- # 初始化獎池
- $lucky_pool = array_fill(0, $lucky_size, 0);
-
- # 中獎機率小於1的調整為1if ($m $lucky_num = 1;
- }
-
- # 安排獎池中的獎項
- $lucky_items = array('first', 'second', 'third', 'normal ');
- $lucky_num += 3;
-
- # 以獎金總額去除一,二,三等獎項
- if ($lucky_amount $lucky_num -= 1 ;
- unset($lucky_items['first']);
- }
-
- if ($lucky_amount $lucky_num -= 1;
- unset($un ['second']);
- }
-
- if ($lucky_amount $lucky_num -= 1;
- unset($lucky_items['third']);
- unset($lucky_items['third']); 🎜>}
-
- # 在獎金池中隨機產生獎項
- foreach(array_rand($lucky_pool, $lucky_num) as $key) {
- $name = $lucky_items[array_rand($lucky_items)];
- if (!isset($create_lucky_first) && $name == 'first') {
- $lucky_pool[$key] = $lucky_first;
- $create_lucky_first = $lucky_first;
- $create_lucky_first = true; }
-
- if (!isset($create_lucky_second) && $name == 'second') {
- $lucky_pool[$key] = $lucky_second;
- $create_lucky_secondl = true; ;
- }
-
- if (!isset($create_lucky_third) && $name == 'third') {
- $lucky_pool[$key] = $lucky_third;
- $create_lucky_third] = $lucky_third = true;
- continue;
- }
-
- if ($name == 'normal') {
- $lucky_pool[$key] = rand($lucky_normal_min, $lucky_normal_max);
- }
-
- }
-
- # 抽獎
- $result = $lucky_pool[rand(0, $lucky_size)];
-
- echo '獎金池大小:' . $lucky_size . 10);
- echo '獎金總金額:' . $lucky_amount . chr(10);
- echo '一等獎獎金:' . $lucky_first . chr(10);
- echo '二等獎獎金:' . $lucky_second . chr(10);
- echo '三等獎獎金:' . $lucky_third . chr(10);
- echo '普通獎獎金:' . $lucky_normal_min . '🎜>echo '普通獎獎金:' . $lucky_normal_min . ' - ' . $lucky_normal_max . chr(10);
- echo '明星用戶資金總額:' . $star_user_amount . chr(10);
- echo '明星用戶中獎機率:' . ($star_user_rate/$lucky_size) . chr( 10) . chr(10);
-
- echo '當前用戶資金總額:' . $user_amount . chr(10);
- echo '當前用戶中獎機率:' . $user_rate . chr(10) ;
- echo '目前使用者獎金池中的獎項:';
- foreach($lucky_items as $name) {
- switch($name) {
- case 'first':
- echo '一等獎(1),';
- $lucky_num--;
- break;
- case 'second':
- echo '二等獎(1),';
- $lucky_num-- ;
- break;
- case 'third':
- echo '三等獎(1),';
- $lucky_num--;
- break;
- case 'normal':
- echo '普通獎(' . $lucky_num . ')';
- break;
- }
- }
- echo chr(10);
- echo '目前使用者抽獎結果:';
- if ($result == $lucky_first) {
- echo '一等獎' . $result . '元';
- } elseif($result == $lucky_second) {
- echo '二等獎' . $result . '元';
- } elseif($result == $lucky_third) {
- echo '三等獎' . $result . '元';
- } elseif($result >= $lucky_normal_min && $result echo '普通獎' . $result . '元';
- } else {
- echo '沒有中獎';
- }
- echo chr(10);
- echo chr(10);
echo '執行耗時:' . (microtime(true) - $timer) . '秒' . chr(10);
複製程式碼
|
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
-
2024-10-22 09:46:29
-
2024-10-13 13:53:41
-
2024-10-12 12:15:51
-
2024-10-11 22:47:31
-
2024-10-11 19:36:51
-
2024-10-11 15:50:41
-
2024-10-11 15:07:41
-
2024-10-11 14:21:21
-
2024-10-11 12:59:11
-
2024-10-11 12:17:31