随机数系统
Estimated reading time: 5 minutes用来做什么
randSystem 用于创建可复现的随机数生成器。它适合需要保存种子、回放随机结果、回退随机流程或调试随机事件的场景。
如果只是临时取一个普通随机数,可以使用全局工具函数 random() 或 either();如果希望 同一个状态产生同一串结果,使用 maplebirch.tool.rand.create()。
使用入口
也可以传入可保存的状态对象:
create(state) 会直接使用传入对象作为内部状态,因此适合把 V 中的对象交给随机系统,让随机序列跟随存档。
最小示例
API
设置种子
使用相同种子会得到相同的随机序列:
百分比判定
percent() 返回 1-100,适合百分比判断。
范围随机数
int(max) 返回 0 到 max 之间的整数,最大值包含在结果范围内。
如果要从数组中取值:
回退与恢复
back(steps) 可以让随机指针回退;之后再次取随机数,会复用已经生成过的历史结果。
forward(steps) 只会在已经生成过的历史里向前移动指针,不会生成新的随机数。
这适合调试、历史回退,或在某些流程中重新计算同一次随机结果。
保存到存档
如果希望随机序列跟随存档,推荐保存完整状态对象:
状态对象包含 seed、history 和 index。如果只保存 seed,可以复现从头开始的序列;如果保存完整状态,则可以精确恢复已经走过的随机历史。
示例:随机遭遇
示例:固定道具池
补充说明
seed改变后会重新开始随机序列。int(max)和percent()每调用一次都会推进随机指针。back()与forward()只移动历史指针,不会直接产生随机值。- 只需要普通随机时,优先考虑 工具函数 中的
random()和either()。
