0

0

一个简单的抽奖测试原型

php中文网

php中文网

发布时间:2016-07-25 09:05:10

|

1330人浏览过

|

来源于php中文网

原创

业务需求,所以做了一个简单的原型测试,功能的主要需求是:用户账户内金额越高的用户中奖的机率就越大。
此脚本只能在命令行下使用,使用示例:
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_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]) ? intval($argv[1]) : 0;
  32. if ($user_amount die('请在命令后面设置一个用户金额.' . chr(10));
  33. }
  34. # 计算当前用户中奖机率
  35. $user_rate = $star_user_rate/$lucky_size/$star_user_amount*$user_amount;
  36. # 根据中奖机率计算奖金个数
  37. $lucky_num = intval($user_rate * $lucky_size);
  38. # 初始化奖池
  39. $lucky_pool = array_fill(0, $lucky_size, 0);
  40. # 中奖机率小于1的调整为1
  41. if ($lucky_num $lucky_num = 1;
  42. }
  43. # 安排奖池中的奖项
  44. $lucky_items = array('first', 'second', 'third', 'normal');
  45. $lucky_num += 3;
  46. # 按奖金总额去除一,二,三等奖项
  47. if ($lucky_amount $lucky_num -= 1;
  48. unset($lucky_items['first']);
  49. }
  50. if ($lucky_amount $lucky_num -= 1;
  51. unset($lucky_items['second']);
  52. }
  53. if ($lucky_amount $lucky_num -= 1;
  54. unset($lucky_items['third']);
  55. }
  56. # 在奖池中随机生成奖项
  57. foreach(array_rand($lucky_pool, $lucky_num) as $key) {
  58. $name = $lucky_items[array_rand($lucky_items)];
  59. if (!isset($create_lucky_first) && $name == 'first') {
  60. $lucky_pool[$key] = $lucky_first;
  61. $create_lucky_first = true;
  62. continue;
  63. }
  64. if (!isset($create_lucky_second) && $name == 'second') {
  65. $lucky_pool[$key] = $lucky_second;
  66. $create_lucky_second = true;
  67. continue;
  68. }
  69. if (!isset($create_lucky_third) && $name == 'third') {
  70. $lucky_pool[$key] = $lucky_third;
  71. $create_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 . chr(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 . ' - ' . $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);
  124. echo '执行耗时:' . (microtime(true) - $timer) . '秒' . chr(10);
复制代码


热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
go语言 注释编码
go语言 注释编码

本专题整合了go语言注释、注释规范等等内容,阅读专题下面的文章了解更多详细内容。

2

2026.01.31

go语言 math包
go语言 math包

本专题整合了go语言math包相关内容,阅读专题下面的文章了解更多详细内容。

1

2026.01.31

go语言输入函数
go语言输入函数

本专题整合了go语言输入相关教程内容,阅读专题下面的文章了解更多详细内容。

1

2026.01.31

golang 循环遍历
golang 循环遍历

本专题整合了golang循环遍历相关教程,阅读专题下面的文章了解更多详细内容。

0

2026.01.31

Golang人工智能合集
Golang人工智能合集

本专题整合了Golang人工智能相关内容,阅读专题下面的文章了解更多详细内容。

1

2026.01.31

2026赚钱平台入口大全
2026赚钱平台入口大全

2026年最新赚钱平台入口汇总,涵盖任务众包、内容创作、电商运营、技能变现等多类正规渠道,助你轻松开启副业增收之路。阅读专题下面的文章了解更多详细内容。

76

2026.01.31

高干文在线阅读网站大全
高干文在线阅读网站大全

汇集热门1v1高干文免费阅读资源,涵盖都市言情、京味大院、军旅高干等经典题材,情节紧凑、人物鲜明。阅读专题下面的文章了解更多详细内容。

73

2026.01.31

无需付费的漫画app大全
无需付费的漫画app大全

想找真正免费又无套路的漫画App?本合集精选多款永久免费、资源丰富、无广告干扰的优质漫画应用,涵盖国漫、日漫、韩漫及经典老番,满足各类阅读需求。阅读专题下面的文章了解更多详细内容。

67

2026.01.31

漫画免费在线观看地址大全
漫画免费在线观看地址大全

想找免费又资源丰富的漫画网站?本合集精选2025-2026年热门平台,涵盖国漫、日漫、韩漫等多类型作品,支持高清流畅阅读与离线缓存。阅读专题下面的文章了解更多详细内容。

19

2026.01.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
php初学者入门课程
php初学者入门课程

共10课时 | 0.6万人学习

RunnerGo从入门到精通
RunnerGo从入门到精通

共22课时 | 1.7万人学习

零基础玩转微信小程序
零基础玩转微信小程序

共96课时 | 14.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号