这是一个用于生成论坛等级系统相关数据的工具,包括等级曲线、经验要求、数据分布报告和数据库迁移脚本等。
pip install -r requirements.txt运行 demo 命令可以一键生成所有图表、报告和 SQL 脚本到 output 目录下。
python main.py demo你也可以根据需要单独生成某一部分数据:
- 生成图表:
python main.py chart
- 生成数据分布报告:
python main.py distribution
- 生成 SQL 迁移脚本:
python main.py sql
默认输出目录为 output,你可以通过 --output 参数指定其他目录。
- 等级范围:$L \in [1, 50]$
- 经验值
$\text{exp} = 25,000$ 时,等级$L = 40$ - 经验值
$\text{exp} = 50,000$ 时,等级$L = 50$ - 等级随经验值的增长呈现先快后慢的趋势。
为了满足上述要求,我们设计了如下函数结构。等级
其中,$f(\text{exp})$ 是一个归一化的函数,其值域为
这里,$\text{exp}_{\text{cap}}$ 是达到满级(50级)所需的经验值,即
我们需要根据约束条件($\text{exp} = 25,000$ 时
将约束条件代入公式:
为了方便计算,我们进行如下变换:
设:
则方程变为:
两边取自然对数,解出
代入具体数值:
$\ln(25001) \approx 10.1266$ $\ln(50001) \approx 10.8198$ $r \approx \frac{10.1266}{10.8198} \approx 0.9360$ $\ln(t) = \ln(0.7959) \approx -0.2284$ $\ln(r) = \ln(0.9360) \approx -0.0662$
最终得到:
将计算出的
注:程序中使用了 floor 向下取整,确保等级为整数。
| 等级 | 升级所需经验 | 累计经验 |
|---|---|---|
| 1 | 0 | 0 |
| 2 | 16 | 16 |
| 3 | 36 | 52 |
| 4 | 62 | 114 |
| 5 | 93 | 207 |
| ... | ... | ... |
| 40 | 1131 | 24437 |
| 41 | 1230 | 25667 |
| ... | ... | ... |
| 49 | 2470 | 47530 |
| 50 | 2471 | 50001 |
这是一个简化的示例,详细的表格可以在 output/reports/level_distribution.csv 中找到。