随机数进阶技巧

55 0

随机数生成就是在给定范围内按均匀概率取出整数或小数,常用于抽签、分组、抽样和程序测试。下面说明进阶技巧。

随机数进阶技巧

  • 可复现实验:记录种子
  • 分组:先打乱名单再按顺序切分
  • 加权抽取:使用 random.choices 的 weights 参数
  • 大范围不重复:使用洗牌算法而不是反复抽取去重
  • 安全令牌:secrets.token_hex(16)

示例

输入:范围 1–6,个数 10,允许重复

生成结果:示例:1、5、4、3、3、5、2、2、5、3

说明:区间共 6 个整数,每个数被抽中的概率为 1/6,期望值为 3.5。

核心要点

  • 均匀分布:区间 [a,b] 内每个整数的概率都是 1/(b−a+1)
  • “不重复”相当于无放回抽样,个数不能超过区间大小
  • 伪随机数由种子决定,同一种子会得到同一序列
  • 涉及密码、令牌、抽奖公信力时要用安全随机源
  • 把随机整数缩放到区间时要避免取模偏差

注意事项

  • 抽奖类用途要使用安全随机源,并保留过程记录
  • “不重复”时个数不能超过范围大小
  • 不要用时间戳作为唯一的随机来源
  • 同一种子会生成同样序列,正式抽取时不要固定种子
  • 把小数乘以范围再取整时,注意上界是否能取到

与相关概念的区别

伪随机数(PRNG)速度快、可复现,适合模拟和游戏;安全随机数(CSPRNG)不可预测,适合密码、令牌和抽奖。真随机数来自物理噪声,一般经由操作系统熵池间接使用。

本站的随机数生成器工具可以直接在网页中使用,无需安装,适合快速得到和核对结果。

常见问题

【随机数生成器真的随机吗?】计算机生成的一般是伪随机或安全随机数,统计上足够均匀;安全随机数还具有不可预测性。

【为什么连续两次出现同一个数?】允许重复时每次独立抽取,出现相同数字是正常的概率事件。

【抽奖用哪种随机数?】建议使用安全随机源,并公开规则、记录过程,以便事后核查。

文中示例可以在本站对应工具中核对。

署名:123问编辑部 · 最近修订:2026-11-11 · 已按编辑与审核说明检查;内容仅供参考,不构成医疗、法律或投资建议。发现错误可查看纠错方式。

标签: 实用工具

抱歉,评论功能暂时关闭!