抽奖与随机点名
说明
- 随机到底够不够随机
- 本页优先用
crypto.getRandomValues,这是浏览器提供的密码学安全随机源,由操作系统的熵池驱动;取范围内整数时用了拒绝采样(超出整倍区间的值直接丢弃重取),避免简单取模带来的偏斜。洗牌用 Fisher–Yates 算法,每种排列出现的概率严格相等。老浏览器没有 crypto 时才退回Math.random,会在结果区标出来。 - 「不放回」是什么意思
- 抽中的人会从名单里移走,下一轮不再参与——发一等奖二等奖三等奖时用这个。「放回」则是每轮都从完整名单里抽,同一个人可能连中,适合课堂点名这种不需要排他的场景。点「重置名单」可以把移走的人放回去。
- 转盘的指针指哪
- 指针固定在正上方(12 点方向),转盘停下时落在指针下的扇区就是结果。结果是先抽好再倒推转盘该停在什么角度,所以动画只是表现形式,不影响概率——每个扇区的面积相同,视觉上也是公平的。名单超过 24 个时扇区上只写序号,不然字挤成一团。
- 随机分组怎么分
- 先整体洗牌,再按顺序发牌式分配,所以人数除不尽时各组只会差 1 个人,不会出现一组 8 人一组 2 人。选「每组 N 人」时最后一组可能不满。
- 名单存在哪
- 存在浏览器的 localStorage 里,只在这台设备的这个浏览器上,不会上传。换设备、清浏览器数据或用隐私模式都会没有。不想留痕就把「名单保存」关掉。
- 相关工具
- 测试数据生成、密码生成、24点计算、多通道计时器。