随机源用浏览器的 crypto.getRandomValues, 不是 Math.random;取 [0,1) 用除法而非取模,各点严格等概率。
crypto.getRandomValues
Math.random
随机只管开头:每投一次性抽出 135 个 32 位数,只用来定骰子的出生位置、姿态、抛速和角速度。
点数是物理算出来的:骰子怎么撞、怎么滚、哪面朝上, 全由刚体运动决定,代码里没有一行是"想要它出几点"的分支。