一個簡單的抽獎測試原型

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. # 一獎獎金
  16. $lucky_first = 100;
  17. # 二等獎獎金
  18. $lucky_second = 50;
  19. # 三等獎獎金
  20. $lucky_third = 25;
  21. #
  22. $lucky_third = 25;
  23. #
  24. # 普通獎最大金額# 普通獎最小金額
  25. $lucky_normal_min = 1;
  26. /**自動從系統取值的參數 **/
  27. # 獎金總金額
  28. /***/
  29. # 獎金總金額
  30. $l57
  31. # 擁有最多資產的使用者的帳戶金額
  32. $star_user_amount = 134;
  33. # 目前使用者金額
  34. $user_amount = isset($argv[1]) ? intval($argv[ 1]) : 0;
  35. if ($user_amount die('請在指令後面設定一個使用者金額.' . chr(10));
  36. }
  37. # 計算目前使用者中獎機率
  38. $user_rate = $star_user_rate/$lucky_size/$star_user_amount*$user_amount;
  39. # 依照中獎機率計算獎金個數
  40. $lucky_num = rateintval'user_num = rateSuser_num = rateintval; lucky_size);
  41. # 初始化獎池
  42. $lucky_pool = array_fill(0, $lucky_size, 0);
  43. # 中獎機率小於1的調整為1if ($m $lucky_num = 1;
  44. }
  45. # 安排獎池中的獎項
  46. $lucky_items = array('first', 'second', 'third', 'normal ');
  47. $lucky_num += 3;
  48. # 以獎金總額去除一,二,三等獎項
  49. if ($lucky_amount $lucky_num -= 1 ;
  50. unset($lucky_items['first']);
  51. }
  52. if ($lucky_amount $lucky_num -= 1;
  53. unset($un ['second']);
  54. }
  55. if ($lucky_amount $lucky_num -= 1;
  56. unset($lucky_items['third']);
  57. unset($lucky_items['third']); 🎜>}
  58. # 在獎金池中隨機產生獎項
  59. foreach(array_rand($lucky_pool, $lucky_num) as $key) {
  60. $name = $lucky_items[array_rand($lucky_items)];
  61. if (!isset($create_lucky_first) && $name == 'first') {
  62. $lucky_pool[$key] = $lucky_first;
  63. $create_lucky_first = $lucky_first;
  64. $create_lucky_first = true; }
  65. if (!isset($create_lucky_second) && $name == 'second') {
  66. $lucky_pool[$key] = $lucky_second;
  67. $create_lucky_secondl = true; ;
  68. }
  69. if (!isset($create_lucky_third) && $name == 'third') {
  70. $lucky_pool[$key] = $lucky_third;
  71. $create_lucky_third] = $lucky_third = true;
  72. continue;
  73. }
  74. if ($name == 'normal') {
  75. $lucky_pool[$key] = rand($lucky_normal_min, $lucky_normal_max);
  76. }
  77. }
  78. # 抽獎
  79. $result = $lucky_pool[rand(0, $lucky_size)];
  80. echo '獎金池大小:' . $lucky_size . 10);
  81. echo '獎金總金額:' . $lucky_amount . chr(10);
  82. echo '一等獎獎金:' . $lucky_first . chr(10);
  83. echo '二等獎獎金:' . $lucky_second . chr(10);
  84. echo '三等獎獎金:' . $lucky_third . chr(10);
  85. echo '普通獎獎金:' . $lucky_normal_min . '🎜>echo '普通獎獎金:' . $lucky_normal_min . ' - ' . $lucky_normal_max . chr(10);
  86. echo '明星用戶資金總額:' . $star_user_amount . chr(10);
  87. echo '明星用戶中獎機率:' . ($star_user_rate/$lucky_size) . chr( 10) . chr(10);
  88. echo '當前用戶資金總額:' . $user_amount . chr(10);
  89. echo '當前用戶中獎機率:' . $user_rate . chr(10) ;
  90. echo '目前使用者獎金池中的獎項:';
  91. foreach($lucky_items as $name) {
  92. switch($name) {
  93. case 'first':
  94. echo '一等獎(1),';
  95. $lucky_num--;
  96. break;
  97. case 'second':
  98. echo '二等獎(1),';
  99. $lucky_num-- ;
  100. break;
  101. case 'third':
  102. echo '三等獎(1),';
  103. $lucky_num--;
  104. break;
  105. case 'normal':
  106. echo '普通獎(' . $lucky_num . ')';
  107. break;
  108. }
  109. }
  110. echo chr(10);
  111. echo '目前使用者抽獎結果:';
  112. if ($result == $lucky_first) {
  113. echo '一等獎' . $result . '元';
  114. } elseif($result == $lucky_second) {
  115. echo '二等獎' . $result . '元';
  116. } elseif($result == $lucky_third) {
  117. echo '三等獎' . $result . '元';
  118. } elseif($result >= $lucky_normal_min && $result echo '普通獎' . $result . '元';
  119. } else {
  120. echo '沒有中獎';
  121. }
  122. echo chr(10);
  123. echo chr(10);
echo '執行耗時:' . (microtime(true) - $timer) . '秒' . chr(10);
複製程式碼


來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板