簡単な宝くじテストのプロトタイプ

WBOY
リリース: 2016-07-25 09:05:10
オリジナル
1087 人が閲覧しました
ビジネスのニーズがあるため、私は簡単なプロトタイプ テストを作成しました。この機能の主な要件は、ユーザー アカウントの金額が大きいほど、賞品を獲得する可能性が高くなるということです。
このスクリプトはコマンドラインからのみ使用できます。使用例:
php lucky.php 100

  1. /**
  2. * 宝くじプログラム
  3. *
  4. * @File: lucky.php
  5. * @Author: zzxworld
  6. * @Email: zzxworld@gmail.com
  7. * @Date: 2012-05-09
  8. */
  9. $timer = microtime(true);
  10. /**手動で設定されたパラメータ **/
  11. # 賞金プールサイズ
  12. $lucky_size = 1000;
  13. #ユーザーの当選確率は賞金プールのサイズを超えることはできません
  14. $star_user_rate = 100;
  15. # 1 等のボーナス
  16. $lucky_first = 100;
  17. # 2 等のボーナス
  18. $lucky_second = 50;
  19. # 3 等のボーナス
  20. $lucky_third = 25;
  21. # 通常の賞金の最大額
  22. $lucky_normal_max = 10;
  23. # 通常の賞金の最小額
  24. $lucky_normal_min = 1;
  25. /**システムから自動的に値を取得するパラメータ **/
  26. # ボーナスの合計額
  27. $lucky_amount = 578;
  28. # 所有最も多くの資産を持つユーザーの口座金額
  29. $star_user_amount = 134;
  30. # 現在のユーザー金額
  31. $user_amount = isset($argv[1]) : 0;
  32. if ($ user_amount < 1) {
  33. die('コマンドの後にユーザー金額を設定してください。' . chr(10));
  34. }
  35. # 現在のユーザーの当選確率を計算します
  36. $user_rate = $star_user_rate/$lucky_size/$ star_user_amount*$user_amount;
  37. # 当選確率に基づいてボーナスの数を計算します
  38. $lucky_num = intval($user_rate * $lucky_size);
  39. # 賞金プールを初期化します
  40. $lucky_pool = array_fill(0, $lucky_size, 0);
  41. # 当選確率は 1 未満です 1 に調整します
  42. if ($lucky_num < 1) {
  43. $lucky_num = 1;
  44. }
  45. # 賞品プールに賞品を配置します
  46. $lucky_items = array ('first', 'next', 'third', 'normal' );
  47. $lucky_num += 3;
  48. # 賞金総額に応じて 1 位、2 位、3 位を削除します
  49. if ($lucky_amount < $ lucky_first) {
  50. $lucky_num -= 1;
  51. unset($lucky_items['first' ]);
  52. }
  53. if ($lucky_amount < $lucky_second) {
  54. $lucky_num -= 1;
  55. unset($lucky_items[' Second']);
  56. }
  57. if ($lucky_amount < $lucky_third) {
  58. $lucky_num -= 1;
  59. unset($lucky_items['third']);
  60. }
  61. # 賞金プールで賞品をランダムに生成します
  62. foreach(array_rand($lucky_pool, $lucky_num) as $key) {
  63. $name = $lucky_items[array_rand($lucky_items)];
  64. if (!isset($create_lucky_first) && $name == 'first') {
  65. $lucky_pool[$key] = $lucky_first;
  66. $create_lucky_first = true;
  67. continue;
  68. }
  69. if (!isset($create_lucky_second) && $name == 'second') {
  70. $lucky_pool[$key] = $ lucky_second;
  71. $create_lucky_first = true;
  72. continue;
  73. }
  74. if (!isset( $create_lucky_third) && $name == 'third') {
  75. $lucky_pool[$key] = $lucky_third;
  76. $create_lucky_third = true;
  77. continue;
  78. }
  79. if ($name == 'normal') {
  80. $ lucky_pool[$key] = rand($lucky_normal_min, $lucky_normal_max);
  81. }
  82. }
  83. # Lottory
  84. $result = $lucky_pool [rand(0, $lucky_size)];
  85. echo '賞金総額:' . $ lucky_size . chr(10);
  86. echo ' ボーナス総額:' $lucky_amount .ボーナス:' . $lucky_first . chr(10);
  87. echo '2 番目のボーナス: ' . $lucky_first . chr(10);
  88. echo '通常賞金ボーナス:' . $lucky_normal_min . ' - ' . $lucky_normal_max . chr(10 );
  89. echo ' スターユーザーの獲得確率:' . ($star_user_rate/$lucky_size) . chr(10);
  90. echo '現在のユーザーの合計資金:' . $user_amount .
  91. echo '現在のユーザーの当選確率:' . $user_rate . chr(10);
  92. echo '現在のユーザーの賞金プール:';
  93. foreach( $lucky_items as $name) {
  94. case 'first':
  95. echo '1 位,';
  96. $lucky_num--;
  97. ブレーク;
  98. case '2 番目':
  99. echo ' 2 等賞(1),';
  100. $lucky_num--;
  101. ブレーク;
  102. case '3 番目':
  103. echo ' 3 等( 1),';
  104. $lucky_num--;
  105. ブレーク;
  106. case 'normal' :
  107. echo '共通賞(' . $lucky_num . ')';
  108. ブレーク;
  109. }
  110. }
  111. echo chr(10);
  112. echo '現在のユーザーの抽選結果:';
  113. if ($result == $lucky_first) {
  114. echo '1等' . $result '元';
  115. } elseif($result == $lucky_second) {
  116. echo '2番目賞' . $result . '元';
  117. } elseif($result = = $lucky_third) {
  118. echo '$result . '元';
  119. } elseif($result >= $lucky_normal_min && $result <= $lucky_normal_max) {
  120. echo '通常の賞品' . 'yuan';
  121. } else {
  122. echo '賞品はありません';
  123. }
  124. echo chr(10);
  125. echo '実行時間:' . (microtime(true) - $timer ) . chr(10);
  126. コードをコピーします


ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート