我们是谁:一个专盯「随机数」的信息整理站
不做大而全的百科,只把随机数这一个话题拆开、讲透、说人话。
随机数(suijishu.cn)从 2021 年起就在做同一件事:把随机数相关的知识、算法、工具差别整理成普通人能看懂的页面。我们不生产随机数,也不托管任何生成服务——我们做的是「把散落在各种文档、规范、论坛里的信息捡回来,重新排一遍,标清楚哪些是确定的、哪些是存疑的」。
为什么只盯这一个话题?因为这个词看起来简单,实际踩坑的人特别多。有人拿普通伪随机去生成密码,有人在抽奖场景里用可复现的种子,有人以为「随机」就等于「均匀」——这些都不是小问题,轻则结果不合预期,重则直接出安全事故。我们想做的事情很具体:让你在动手之前,先知道自己在用什么。
站内的内容分三条线。第一条是原理线,讲清楚真随机与伪随机的来源差异;第二条是算法线,把线性同余、梅森旋转、密码学安全随机数这些名词拆成「它适合干什么、不适合干什么」;第三条是使用线,把种子、范围、去重、分布这些参数讲成实际操作步骤。三条线互相引用,读完能连成一张网,而不是一堆孤立的页面。
关于边界,我们把话说在前面:本站所有内容以公开规范、官方文档和可查资料为准。凡是无法核实的具体名单、日期、数量、获奖记录、播放量,我们一律不写、不猜、不补。信息没确认就留空,这是我们编辑流程里的硬规定,不是客套话。
接着看内行干货
随机数发展历程:从一篇笔记到一个专题站
没有融资故事,只有一步步把内容做扎实的过程。
- 2021 年 · 起点 最初只是内部用的一份随机数选型笔记,记录不同场景该用哪类随机源。同事之间传阅,越写越长,索性整理成公开页面。
- 2022 年 · 成体系 把零散笔记按「原理 / 算法 / 使用」三条线重组,补上真随机与伪随机的对照说明,第一次形成完整的内容骨架。
- 2023 年 · 补细节 集中处理读者反馈里出现频率最高的问题:种子怎么选、范围怎么写、去重会不会破坏均匀性。每一条都补了具体例子。
- 2024 年 · 立规矩 建立内容核对流程:凡引用公开规范的,必须标注出处;凡无法核实的数字与名单,一律不写。这条规矩沿用至今。
- 2026 年 · 现在 内容按月巡检,标准类页面遇到公开规范变更即时修订。页面底部统一标注最近验证时间,方便你判断信息新鲜度。
说明:以上时间点对应的是内容整理工作的阶段划分,不涉及任何外部评级、认证或排名,我们也不做这类宣称。
随机数访问节点状态:我们盯着的几件事
下面是我们日常巡检的几个观测点,数值为近期抽样区间,仅作参考,不代表任何承诺性指标。
延迟会随网络环境波动,这里展示的是区间抽样值。若你所在地区访问明显偏慢,欢迎邮件告诉我们,我们会记录并排查。
深度解读:随机数上手的三步走与五个坑
这部分是站里信息密度最高的内容,也是我们最想让你先看的部分。
第一步:先判断你的场景属于哪一类
动手之前先问自己一个问题——这个结果被别人知道规律,会不会造成损失?如果答案是「会」,比如生成密码、令牌、抽奖公证、密钥材料,那你需要的只有一种东西:密码学安全随机数。它的特征是不可预测、不可由前序输出推导后序输出。如果答案是「不会」,比如点名、分组、模拟数据、占位填充,那普通伪随机完全够用,纠结它够不够「真」是浪费时间。
很多人卡在这里,是因为把「随机」当成了一个强度概念,以为越随机越好。实际上它是个匹配问题:强度不够会出事,强度过剩只是浪费性能。分清楚场景,后面的选择就简单了。
第二步:搞懂种子到底在控制什么
伪随机数生成器本质上是一个确定性函数:同样的种子进去,同样的序列出来。这意味着种子决定了整条序列的走向。测试时用固定种子是优点,因为结果可复现,方便排查问题;生产环境里用固定种子就是灾难,因为别人拿到种子就能推出你所有的「随机」结果。
所以规则很朴素:测试环境固定种子,生产环境用系统熵源自动播种,绝不手写常量。如果你看到某段代码里写着类似「以当前时间戳为种子」的写法,要留意——时间戳的取值空间远比看上去小,在并发或高频调用下很容易撞车。
第三步:把范围、去重、分布三个参数对齐
范围决定取值区间,注意边界是闭区间还是开区间,差一位就是常见的 off-by-one 错误来源。去重是另一个高频坑:从有限集合里不重复抽取,正确做法是洗牌后取前 N 个,而不是反复随机再判重——后者在集合接近抽满时效率会急剧下降,还可能陷入长时间循环。分布则要看你的需求是均匀还是加权,加权抽样的实现方式和均匀抽样完全不同,别指望用取模凑出来。
五个容易踩的坑
- 用取模压缩范围。直接对随机值取模会引入偏差,低位区间的数字出现概率略高。正确做法是拒绝采样或使用平台提供的区间函数。
- 把伪随机当安全随机用。最典型的是拿普通语言的 rand 系列去生成验证码或重置令牌,这类函数的设计目标从来不是抗预测。
- 忽略并发下的种子共享。多线程共用一个生成器实例,轻则序列错乱,重则不同线程拿到相同结果。
- 以为去重不影响均匀性。一旦要求不重复,每个元素被抽中的概率就随抽取过程动态变化,做概率计算时必须按无放回模型来算。
- 用随机数做唯一标识。随机不等于唯一,短随机串在数据量上来之后必然碰撞,唯一性应该交给专门的机制保证。
随机数一个判断工具是否靠谱的土办法
看它有没有明确写出随机源。写着「基于系统熵源」「使用 Web Crypto API」的,基本可以放心用于非安全场景;只写「随机生成」四个字、对来源含糊其辞的,涉及安全用途就别用。另外可以连续生成多组结果看分布是否明显偏斜——这个方法不能证明它安全,但能筛掉一些实现粗糙的工具。我们自己在做内容核对时也是这么筛的,凡是来源说不清的工具,一律不写进推荐。
顺带说一句我们的态度:站内不展示任何无法核实的性能评分、排行或获奖信息。你看到的所有结论,要么来自公开规范,要么是我们说明清楚前提的实测观察,能复现、能追溯。
分级清单:从完全不懂到能自己选型
- 入门 · 分得清两类随机 能说清真随机和伪随机的来源差异,知道什么场景必须避开可复现的生成方式。
- 基础 · 会调参数 能正确设置范围、处理边界、用洗牌实现无放回抽样,不再写出取模偏差这类代码。
- 进阶 · 懂算法取舍 了解线性同余、梅森旋转、密码学安全随机数各自的速度与强度特征,能按场景挑对工具。
- 熟练 · 能验证结果 会用分布检验、卡方检验这类方法判断生成质量,遇到异常能定位到种子还是算法的问题。
- 精通 · 能做安全设计 在密钥、令牌、抽奖公证等场景里独立完成随机源选型与熵源管理,知道边界在哪、风险怎么兜。
随机数四步上手流程
- 定场景 先判断结果泄露规律会不会造成损失,决定用安全随机还是普通随机。
- 选来源 按上一步的结论挑随机源,安全场景只认系统级熵源与密码学接口。
- 调参数 把范围、是否去重、权重分布三个参数一次对齐,避免后期返工。
- 验结果 小样本先跑一遍看分布,确认没有明显偏斜再放到正式流程里用。
随机数精选内容:编辑挑出来的几条
都是站内已有的内容方向,按读者问得最多的顺序排。
-
新手必看
随机数到底是什么,为什么你每次得到的结果都不一样
从抛硬币讲到计算机生成,把「不可预测」这件事拆成看得懂的几句话,适合零基础先过一遍。
-
避坑指南
这几个随机数用法正在悄悄埋雷,你可能已经在用了
取模偏差、固定种子、伪随机当安全随机用,三条最常见的错误用法和它们的正确替代写法。
-
深度盘点
真随机与伪随机到底差在哪,一张对照表说清适用边界
不比谁更高级,只比谁更合适。按场景逐条对照,看完能直接决定自己该用哪一类。
-
热门精选
抽签、分组、点名:日常场景里怎么选随机方案最省事
非安全场景的实用选型思路,包含去重抽样的正确做法和常见参数设置。
-
进阶阅读
密码学安全随机数是什么,普通工具为什么不能替代它
从不可预测性讲到熵源管理,适合已经会调参数、想再往深走一步的读者。
内容目录:站里都在讲些什么
按主题分组,标注内容形态与最近核对时间,方便你判断要不要点进去。
-
基础原理 · 随机数的来源与分类可访问
-
算法详解 · 线性同余与梅森旋转的取舍可访问
-
安全专题 · 密码学安全随机数怎么辨认重点推荐
-
实操手册 · 范围、去重、加权抽样的参数设置可访问
-
常见误区 · 五个高频错误用法与替代方案可访问
-
术语速查 · 种子、熵、分布这些词到底指什么待补充
「待补充」是我们自己标的状态,表示该条目还在核对资料,内容不够扎实之前不会放出来。宁缺勿滥,这是我们的一贯做法。
内容团队:三个人的编辑部
规模不大,但每篇内容都有人负责到底。
负责选题与事实核对。习惯把每个结论都追问一遍「出处在哪」,无法核实的数字一律删掉,是站内「宁缺勿假」规矩的坚持者。
负责算法与实现部分的准确性。写代码出身,最看不惯把伪随机当安全随机用的写法,站里所有代码示例都经他手过一遍。
负责把技术内容改成人话,也负责处理读者反馈。她说读者问得最多的问题,往往就是内容没写清楚的地方。
以上为团队成员的公开署名信息。我们不公布无法核实的资历头衔与荣誉,也不做任何形式的能力背书,内容质量请以页面本身为准。
常见问题:读者问得最多的几件事
答案都写具体,不糊弄。点标题展开。
随机数到底是什么?和我在课本上看到的定义一样吗?
随机数简单说就是「事先无法被准确预测、每次结果独立、长期看又符合某个概率分布」的一串数值。课本强调数学定义,我们更关心它落地时是什么样:抛硬币是随机数,计算机里 rand() 出来的也是随机数,但两者来源完全不同。前者靠物理过程,后者靠确定性算法加一个种子。你在本站看到的绝大多数讲解,都是围绕「怎么分辨这两类、各自适合什么场景」展开的。
在线生成的随机数安全吗?能用来做密码或者抽奖吗?
要分场景。用来做抽签、分组、点名、生成测试数据,普通伪随机完全够用;但用来生成密码、密钥、验证码种子、抽奖中奖名单这类涉及利益或安全的结果,就必须用密码学安全的随机源。判断方法很直接:看它是否声明使用 CSPRNG(如系统级 /dev/urandom、Web Crypto API 的 getRandomValues)。本站只做知识整理和内容导航,不托管、不代理任何在线生成服务,具体工具的安全等级请以该工具官方说明为准。更细的辨别方法可以看 深度解读 里的实操部分。
浏览本站需要注册或登录吗?会不会收集我的个人信息?
不需要。本站是纯信息导航与内容解析站,浏览全部公开内容无需注册、无需登录、不设会员墙,也不要求你提交手机号或实名信息。页面本身不提供上传入口,你不需要把任何文件、数据交给我们。如果你在第三方工具里生成过内容,那部分数据的处理规则由该工具负责,和我们无关。
新手应该从哪一篇开始看?有没有推荐的上手顺序?
建议按「先分清楚类别,再挑工具,最后看坑」的顺序走。第一步读基础原理,搞懂真随机和伪随机的边界;第二步看算法详解,知道线性同余、梅森旋转、CSPRNG 各自擅长什么;第三步再看使用教程,把种子、范围、去重这些参数搞明白。我们做了一份从入门到进阶的分级清单,就在 深度解读 区块里,照着走一遍基本不会绕路。
真随机数和伪随机数到底差在哪?日常使用需要在意吗?
差在「不可预测性从哪来」。真随机取自物理噪声,理论上不可复现;伪随机由算法加种子决定,只要种子和算法已知,结果就能被完整复现。日常抽签、分组、模拟测试,伪随机的表现已经足够好,你几乎感觉不到区别;但一旦涉及密钥、令牌、抽奖公证,可复现就是致命缺陷。所以不是「哪个更好」,而是「哪个更合适」。
内容多久更新一次?发现错误怎么反馈给你们?
常规内容我们按月巡检一次,算法和标准类内容如果遇到公开规范变更会即时修订,页面底部会标注最近验证时间。发现事实错误、失效引用或者表述不清,发邮件到 hello@suijishu.cn 就行,写清页面位置和问题即可,我们一般在 48 小时内回复并处理。也欢迎直接指出我们哪里没讲透,这类反馈优先级最高。
关于本站内容的几点说明
把边界讲清楚,比说漂亮话有用。
- 本站是信息导航与内容解析站,只做知识整理、原理科普和资料归类。我们不托管、不上传、不代理任何文件、软件、流媒体或生成服务,也不是任何工具或平台的官方站点。
- 站内信息来源于公开规范、官方文档与公开可查资料,版权归原作者与原始发布方所有。我们只做转述、归纳与重新组织,不主张对原始内容的任何权利。
- 涉及权益的投诉请发邮件至 hello@suijishu.cn,写明具体页面位置、权利依据与联系方式,我们会在 48 小时内核实并处理,确认侵权的第一时间下架或修改。
- 本站不提供盗版、破解、侵权内容的获取路径,也不推荐任何来源不明或无法核实安全性的工具。凡涉及安全用途的选型,请以官方文档为准。
- 无法核实的具体名单、日期、数量、排名、获奖与播放数据,我们一律不写、不推测、不补齐。信息尚未确认时保持空缺,这是我们编辑流程的硬性规定。
- 本站内容面向成年读者,以技术科普为主。未成年读者如需在实操中使用相关工具,请在监护人指导下进行,涉及账号与密码的操作尤其注意。
联系我们
有问题、有纠错、想聊内容,都可以直接找我们。
联系方式
- 品牌名称随机数(suijishu.cn)
- 读者与纠错hello@suijishu.cn
- 商务合作biz@suijishu.cn
- 版权投诉copyright@suijishu.cn
- 客服电话+86-571-8888-0000(工作日 9:30–18:00)
- 办公地址浙江省杭州市科技园路 88 号 A 座 12 层
写邮件的小建议
纠错类邮件请写清三件事:页面位置(哪个区块)、问题描述、你参考的公开出处。有出处我们能核对得更快,通常 48 小时内回复。内容建议类邮件不用讲客套,直接说你希望我们讲清楚哪个问题就行,越是「网上说法互相打架」的题目,我们越有兴趣做。
我们不做付费删稿,也不接受以「合作」为名的内容植入。这条写在这里,是为了省掉双方的时间。
现在就写邮件