随机数生成器:PRNG 算法、真随机性以及何时重要
闭上眼睛,想一个 1 到 10 之间的随机数。如果你说了 7,你并不孤单——人类在随机选择方面非常糟糕,始终偏爱奇数并避免极端值。一个合适的随机数生成器(RNG)消除了这种认知偏差,产生的数字遵循数学上的均匀分布,即范围内的每个值被选中的概率完全相同。但并非所有随机性都是平等的:伪随机(模拟随机性的算法)和真随机(如大气噪声或放射性衰变等物理熵源)之间的界限,根据你的用例而有天壤之别。对于彩票抽奖或密码学密钥,你需要密码学安全的随机性;对于 A/B 测试要显示哪个落地页变体,快速的伪随机数生成器(PRNG)绰绰有余。我们的免费在线 RNG 让你可以设置任何整数范围、生成单个或多个值,并可选择应用种子以实现可重现的序列——全部在浏览器本地运行,不收集任何数据。
随机数生成器
免费 · 无需注册
分步指南
设置你的数字范围
定义你的随机范围的最小值和最大值。生成器在此范围内产生整数,包含两个端点——设置 1 到 6 作为虚拟骰子投掷、1 到 100 作为百分比投掷,或任何自定义范围。该工具还支持一次生成多个值(每次点击最多 100 个数字),可以选择允许或不允许重复。对于超过 1,000,000 的范围,界面自动切换到更高效的生成算法以保持结果即时。
选择你的随机模式
在三种模式之间选择:标准 PRNG(快速,可用种子重现)、Crypto API(使用 window.crypto.getRandomValues 获取密码学级别的随机性)或带种子的 PRNG(输入种子值以每次生成完全相同的序列)。Crypto API 模式较慢——通常比 PRNG 慢 10-50 倍——但直接从操作系统获取熵,适用于密码生成、密钥派生和安全敏感应用。标准模式使用梅森旋转算法变体,适合游戏、抽样和日常随机性。
生成并验证分布
点击生成,立即看到你的随机数。该工具包含基本的分布可视化——生成大量数字后,频率条形图显示分布是否大致均匀(如应有的那样)或偏斜。对于种子模式,复制种子值可在任何机器上重现相同的序列——对于确定性测试、游戏中的程序化生成和可重现研究非常有用。
使用技巧与最佳实践
真随机数生成器(TRNG)从物理过程收集熵——大气噪声、电路中的热噪声、放射性衰变计时,甚至是熔岩灯的移动(Cloudflare 著名的 LavaRand)。相比之下,伪随机生成器是确定性的:给定相同的种子,它们产生完全相同的序列。对于 99% 的在线应用,PRNG 完全足够。
梅森旋转算法(MT19937)的周期为 2¹⁹⁹³⁷−1——这个数字如此之大,以至于如果你每秒生成十亿个数字,需要超过 10⁶⁰⁰⁰ 年才能看到序列重复。它是 Python、Ruby、R 和许多其他语言的默认 PRNG。我们的标准模式使用该算法的一个变体。
对于密码学用途(密码、令牌、密钥),始终使用 Crypto.getRandomValues() 或操作系统级别的熵源——绝不要使用 Math.random()。V8 中标准的 JavaScript Math.random() 使用 xorshift128+,它快速但可预测:研究人员已证明,仅观察几千个输出后就可以重构内部状态的实用攻击。
均匀分布意味着范围内的每个值具有相等的概率。投掷公平的 6 面骰子在多次投掷后每个面应出现约 16.67%。高斯(正态)分布则不同——值聚集在均值周围,极端值罕见。我们的工具仅生成均匀分布;如果你需要高斯分布,可以对两个均匀随机数应用 Box-Muller 变换。
带种子的 PRNG 对可重现性至关重要。像 Minecraft 这样的游戏使用种子来生成整个世界——在任何机器上输入相同的种子,你会得到相同的地形。程序化内容生成、科学模拟和随机化 A/B 测试框架都依赖种子来精确重跑相同的实验。
当为彩票或抽奖生成随机数时,记录时间戳、种子、所用算法和输出。发布所有这些信息。任何人都可以通过在相同算法中重新运行相同种子来验证结果。这就是可证明公平系统的工作原理——它消除了任何操纵的嫌疑。
生日悖论适用于随机数生成:如果你在大小为 N 的范围内生成随机数,只需要大约 √(2N) 次抽取,冲突(重复)的概率就超过一半。在 1-365 的范围内,仅 23 个人就使得共享生日的概率 > 50%。在举办抽奖或生成唯一 ID 时,请考虑这种冲突概率。
对于 A/B 测试:将用户随机分配到变体 A 或 B 应该在服务端使用 (user_id + experiment_seed) 的哈希来完成,而不是在客户端使用 Math.random()。客户端随机化可能导致单个会话中出现闪烁的变体,并使调试时难以重现确切的分配。
常见问题解答
随机性不仅仅是从帽子里挑一个数字——它是贯穿计算机科学、统计学、安全和游戏的基础工具。无论你需要快速掷骰子、可重现的研究数据集,还是密码学强度的令牌,理解哪种类型的随机性适合你的用例就是成功的一半。我们的免费 RNG 在一个地方为你提供所有三种模式。
免费试用此工具 →open_in_new