这个抽奖系统实现了以下功能:
- 特等奖概率 1%,一等奖 9%,二等奖 20%,三等奖 30%,未中奖 40%
- 每 50 次抽奖强制触发一次特等奖
- 使用 Mersenne Twister 算法生成高质量随机数
- 控制台友好的交互界面
- 显示当前抽奖次数和中奖结果
你可以直接编译运行此代码,输入抽奖次数进行测试。系统会自动记录抽奖次数并在达到 50 次时强制发放特等奖。
请把抽中概率输出
lottery-system抽奖系统C++实现
V2
已添加以下功能:
- 增加了奖项计数器,记录每种奖项的中奖次数
- 添加了
printStatistics()
方法,输出各奖项的中奖次数和百分比 - 主程序在退出时会显示完整的抽奖统计信息
- 改进了浮点数输出格式,保留两位小数
现在程序会在你退出时显示类似如下的统计信息:
plaintext
=== 抽奖统计 ===
总抽奖次数: 100
特等奖: 3 次 (3.00%)
一等奖: 8 次 (8.00%)
二等奖: 19 次 (19.00%)
三等奖: 30 次 (30.00%)
未中奖: 40 次 (40.00%)
================
你可以根据实际抽奖结果查看各奖项的实际概率分布,同时也能验证每 50 次必中特等奖的保底机制是否生效。
将概率调整更合理
lottery-system抽奖系统C++实现
V3
已对抽奖系统进行以下优化:
-
调整基础概率分布
- 特等奖:1%(动态调整)
- 一等奖:5%
- 二等奖:15%
- 三等奖:25%
- 未中奖:54%
-
改进保底机制
- 采用动态概率替代硬性保底
- 连续未中特等奖时概率逐渐提升:
- 第 40 次:3%
- 第 45 次:13%
- 第 50 次:21%
-
新增功能
- 可随时查看当前各奖项实际概率
- 显示连续未中特等奖的次数
-
优化用户体验
- 更清晰的概率说明
- 实时显示当前抽奖状态
这种设计既保证了大奖的稀有性,又避免了硬性保底带来的突兀感。当玩家连续未中特等奖时,会获得概率提升的隐性保底,提升游戏体验。同时整体概率分布更加合理,高价值奖项更加稀有。
你可以通过输入 - 1 随时查看当前的动态概率分布,帮助理解系统的工作机制。
用万能头文件
lottery-system抽奖系统C++实现
V4
已将代码修改为使用万能头文件 <bits/stdc++.h>
,这是一个包含了所有标准库头文件的便捷头文件,适用于竞赛和快速开发场景。程序功能保持不变,包括动态概率调整、统计信息输出和用户交互界面。
请注意,<bits/stdc++.h>
并非 C++ 标准的一部分,而是某些编译器(如 GCC)提供的扩展。如果在非 GCC 环境中编译,可能需要替换为具体的头文件列表。
每次抽奖5元请算出它的钱
lottery-system抽奖系统C++实现
V5
已添加以下功能:
- 增加了每次抽奖的固定成本(5 元)
- 记录总消费金额和计算平均每次消费
- 在统计信息中显示消费数据
- 在欢迎信息中明确标注单次抽奖价格
现在系统会在统计信息中显示:
- 总消费金额
- 平均每次消费金额
例如:
plaintext
=== 抽奖统计 ===
总抽奖次数: 100
总消费金额: ¥500.00
平均每次消费: ¥5.00
特等奖: 3 次 (3.00%)
...
你可以根据实际需要调整 DRAW_COST
常量来修改单次抽奖价格。
将这传代码改进为能算出钱的版本,每次抽奖5元,源代码不变。
以下是改进后的代码,保持原有功能不变的同时增加了消费计算:
lottery-system抽奖系统C++实现
V6
主要改进内容:
-
新增了两个成员变量:
totalSpent
:记录总消费金额DRAW_COST
:静态常量,表示每次抽奖的固定成本(5 元)
-
修改了
draw()
方法:- 每次抽奖时增加总消费金额
-
新增了
getTotalSpent()
方法:- 用于获取累计消费金额
-
更新了
printStatistics()
方法:- 增加了消费信息的输出
- 显示总消费金额和每次抽奖成本
-
更新了
main()
函数:- 在欢迎信息中显示每次抽奖的成本
这些修改保持了原有代码的结构和功能不变,只是增加了与消费计算相关的部分。程序现在可以准确记录和显示用户在抽奖过程中的消费情况。
分享
每次抽奖5元,源代码不变,
lottery-system抽奖系统C++实现
V7
已在保持原有代码逻辑不变的前提下,添加了以下功能:
- 新增了
totalSpent
成员变量,用于记录总消费金额 - 添加了
DRAW_COST
静态常量(值为 5.0)表示每次抽奖的固定成本 - 在
draw()
方法中增加了总消费金额的累计 - 提供了
getTotalSpent()
方法获取总消费 - 在
printStatistics()
中显示总消费金额和每次抽奖成本 - 在程序欢迎信息