Skip to main content

Random

abbr.stand forcn
PRNGPseudo-Random Number Generator伪随机数生成器
LCGLinear Congruential Generator线性同余生成器
encn
random随机
uniform均匀分布
normal正态分布
exponential指数分布
poisson泊松分布
gamma伽马分布
场景分布原因
抽卡/抽奖Uniform公平随机
角色属性Normal大部分普通,少数极端
掉落间隔Exponential"无记忆性",每次独立
刷怪数量Poisson离散计数
总伤害量Gamma多次攻击累计

这些是概率分布函数,在模拟、游戏、数据科学中很常用。

各分布详解

Uniform - 均匀分布

  • [0, 1) 之间每个值概率相等
  • 用途:最基础的随机,抽奖、随机选择、洗牌等

Normal / Gaussian - 正态分布

  • 钟形曲线,中间多,两边少
  • 用途:
    • 游戏伤害浮动:基础伤害 100,实际 90-110 波动,大多数接近 100
    • 身高/体重模拟:生成 NPC 属性,大部分正常,少数极端
    • 射击精度:子弹落点围绕准心分布
    • 股票价格波动:价格变化模拟
// 伤害 = 100 + normal() * 10
// 大多数在 90-110,偶尔 80 或 120

Exponential - 指数分布

  • 开始高,快速衰减,无记忆性
  • 用途:
    • 等待时间:下一个顾客多久到达、下一次事件间隔
    • 物品掉落:打怪多久掉一次稀有物品
    • 设备寿命:灯泡什么时候坏
    • 放射性衰变:模拟粒子衰变
// 平均 5 分钟来一个顾客
const waitMinutes = exponential(1 / 5);

Poisson - 泊松分布

  • 离散的计数分布,适用于单位时间内事件次数
  • 用途:
    • 单位时间内事件次数:每小时收到多少邮件
    • 游戏刷怪:这一波刷几只怪
    • 网站访问:每分钟多少请求
    • 错别字数量:一页纸上有几个错字
// 平均每小时 10 封邮件,这小时收到几封?
const emailCount = poisson(10); // 可能是 8, 11, 10, 12...

Gamma - 伽马分布

  • 可调节的偏态分布,多个指数事件的总和
  • 用途:
    • 多个指数事件的总和:完成 3 个任务的总时间
    • 保险理赔金额:大多数小额,少数巨额
    • 降雨量:某地区月降雨量分布
    • 排队系统:服务 N 个顾客的总时间
// 完成 3 个独立任务,每个平均 2 分钟
const totalTime = gamma(3, 2);