簡単な宝くじテストのプロトタイプ
リリース: 2016-07-25 09:05:10
ビジネスのニーズがあるため、私は簡単なプロトタイプ テストを作成しました。この機能の主な要件は、ユーザー アカウントの金額が大きいほど、賞品を獲得する可能性が高くなるということです。
このスクリプトはコマンドラインからのみ使用できます。使用例:
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;
- # 1 等のボーナス
- $lucky_first = 100;
- # 2 等のボーナス
- $lucky_second = 50;
- # 3 等のボーナス
- $lucky_third = 25;
- # 通常の賞金の最大額
- $lucky_normal_max = 10;
- # 通常の賞金の最小額
- $lucky_normal_min = 1;
- /**システムから自動的に値を取得するパラメータ **/
- # ボーナスの合計額
- $lucky_amount = 578;
- # 所有最も多くの資産を持つユーザーの口座金額
- $star_user_amount = 134;
- # 現在のユーザー金額
- $user_amount = isset($argv[1]) : 0;
- if ($ user_amount < 1) {
- die('コマンドの後にユーザー金額を設定してください。' . chr(10));
- }
- # 現在のユーザーの当選確率を計算します
- $user_rate = $star_user_rate/$lucky_size/$ star_user_amount*$user_amount;
- # 当選確率に基づいてボーナスの数を計算します
- $lucky_num = intval($user_rate * $lucky_size);
- # 賞金プールを初期化します
- $lucky_pool = array_fill(0, $lucky_size, 0);
- # 当選確率は 1 未満です 1 に調整します
- if ($lucky_num < 1) {
- $lucky_num = 1;
- }
- # 賞品プールに賞品を配置します
- $lucky_items = array ('first', 'next', 'third', 'normal' );
- $lucky_num += 3;
- # 賞金総額に応じて 1 位、2 位、3 位を削除します
- if ($lucky_amount < $ lucky_first) {
- $lucky_num -= 1;
- unset($lucky_items['first' ]);
- }
- if ($lucky_amount < $lucky_second) {
- $lucky_num -= 1;
- unset($lucky_items[' Second']);
- }
- if ($lucky_amount < $lucky_third) {
- $lucky_num -= 1;
- 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 = true;
- continue;
- }
- if (!isset($create_lucky_second) && $name == 'second') {
- $lucky_pool[$key] = $ lucky_second;
- $create_lucky_first = true;
- continue;
- }
- if (!isset( $create_lucky_third) && $name == 'third') {
- $lucky_pool[$key] = $lucky_third;
- $create_lucky_third = true;
- continue;
- }
- if ($name == 'normal') {
- $ lucky_pool[$key] = rand($lucky_normal_min, $lucky_normal_max);
- }
- }
- # Lottory
- $result = $lucky_pool [rand(0, $lucky_size)];
- echo '賞金総額:' . $ lucky_size . chr(10);
- echo ' ボーナス総額:' $lucky_amount .ボーナス:' . $lucky_first . chr(10);
- echo '2 番目のボーナス: ' . $lucky_first . chr(10);
- echo '通常賞金ボーナス:' . $lucky_normal_min . ' - ' . $lucky_normal_max . chr(10 );
- echo ' スターユーザーの獲得確率:' . ($star_user_rate/$lucky_size) . chr(10);
- echo '現在のユーザーの合計資金:' . $user_amount .
- echo '現在のユーザーの当選確率:' . $user_rate . chr(10);
- echo '現在のユーザーの賞金プール:';
- foreach( $lucky_items as $name) {
- case 'first':
- echo '1 位,';
- $lucky_num--;
- ブレーク;
- case '2 番目':
- echo ' 2 等賞(1),';
- $lucky_num--;
- ブレーク;
- case '3 番目':
- echo ' 3 等( 1),';
- $lucky_num--;
- ブレーク;
- case 'normal' :
- echo '共通賞(' . $lucky_num . ')';
- ブレーク;
- }
- }
- echo chr(10);
- echo '現在のユーザーの抽選結果:';
- if ($result == $lucky_first) {
- echo '1等' . $result '元';
- } elseif($result == $lucky_second) {
- echo '2番目賞' . $result . '元';
- } elseif($result = = $lucky_third) {
- echo '$result . '元';
- } elseif($result >= $lucky_normal_min && $result <= $lucky_normal_max) {
- echo '通常の賞品' . 'yuan';
- } else {
- echo '賞品はありません';
- }
- 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