首页 随机生成器 随机数生成器

随机数生成器

Random Number Generator

生成随机整数、小数、UUID、颜色等,满足各种随机数需求

Generate random integers, decimals, UUIDs, colors and more for any purpose

🎲 随机整数生成

🎲 Random Integer Generator

点击按钮生成随机数
Click button to generate random numbers

📊 随机小数生成

📊 Random Decimal Generator

-

🎯 常见场景

🎯 Common Scenarios

-
💡 提示:密码生成包含大小写字母、数字和特殊字符,适合创建强密码
💡 Tip: Password includes uppercase, lowercase, numbers and special characters

🎨 随机颜色生成

🎨 Random Color Generator

❓ 随机布尔值

❓ Random Boolean

50%
-

📜 历史记录

📜 History

暂无历史记录

No history yet

🏷️ 相关标签

免费纯前端前端开发随机生成器隐私安全在线工具生成器随机

什么是随机数生成器?

随机数生成器是一款在浏览器端生成高质量随机数的在线工具。随机数在计算机科学中有着广泛的应用:密码学中的密钥生成、蒙特卡洛模拟、随机抽样、游戏开发中的概率事件、A/B 测试中的分组分配、数据可视化中的噪声生成等。随机数分为两类:伪随机数(PRNG)和密码学安全随机数(CSPRNG)。普通的 Math.random() 使用线性同余算法,虽然对一般场景足够,但在安全敏感场景(如生成密码、Token)中不够安全。本工具提供两种模式:普通模式使用 Math.random(),适合抽奖、模拟等一般用途;安全模式使用 crypto.getRandomValues(),基于操作系统的真随机源,适合密码学和安全相关场景。

如何使用随机数生成器

  1. 步骤一:设置范围 — 输入最小值和最大值,定义随机数的取值范围。支持整数和小数范围。例如设置 1-100 生成 1 到 100 之间的随机整数。
  2. 步骤二:选择模式和数量 — 选择普通模式或安全模式(CSPRNG)。设置需要生成的数量(1-1000个)。可以设置是否允许重复值。
  3. 步骤三:生成并导出 — 点击生成按钮,随机数立即显示在结果区域。支持复制全部结果、下载为 CSV 文件,方便在其他程序中使用。

常见使用场景

场景一:抽奖和随机分组

在线上活动抽奖中,使用随机数生成器从参与者中随机选取获奖者。也可以用于团队随机分组、课程随机点名等场景。确保"不允许重复"模式开启,避免同一个人被抽中多次。

场景二:安全 Token 和验证码

生成一次性密码(OTP)、会话令牌、重置密码链接中的随机参数等安全敏感数据时,必须使用 CSPRNG 模式。系统级随机源保证了不可预测性,防止攻击者猜测或重现随机序列。

场景三:数据科学和统计模拟

蒙特卡洛方法需要大量随机数进行概率模拟。使用本工具批量生成随机数(最多 1000 个),导出为 CSV 后导入 Python/R 进行统计分析、回归测试或性能基准测试。

技术原理

JavaScript 的 Math.random() 返回 [0, 1) 范围内的浮点数。不同引擎使用不同算法:V8 使用 xorshift128+,SpiderMonkey 使用 xoshiro256**。这些都是高速 PRNG,但不适合安全用途。crypto.getRandomValues() 调用操作系统的 CSPRNG(如 Linux 的 getrandom()、Windows 的 BCryptGenRandom),产生不可预测的随机字节。将其转换为指定范围的整数需要使用拒绝采样(rejection sampling)以避免取模偏差(modulo bias)。

// 安全范围内的随机整数(避免取模偏差)
function secureRandomInt(min, max) {
  const range = max - min + 1;
  const maxValid = Math.floor(2**32 / range) * range;
  const arr = new Uint32Array(1);
  let result;
  do {
    crypto.getRandomValues(arr);
  } while (arr[0] >= maxValid);
  return min + (arr[0] % range);
}
// 生成 N 个不重复的随机数
function shuffle(arr) {
  for (let i = arr.length - 1; i > 0; i--) {
    const j = secureRandomInt(0, i);
    [arr[i], arr[j]] = [arr[j], arr[i]];
  }
  return arr;
}

最佳实践与注意事项

常见问题

Q:Math.random() 生成的随机数安全吗?

A>不安全。Math.random() 是伪随机数生成器,其内部状态可以被逆向推算。一旦攻击者获取足够多的输出值,就能预测后续所有随机数。密码学、安全令牌等场景必须使用 crypto.getRandomValues()。

Q:什么是"取模偏差"?

A>当使用 random() % N 获取 [0, N) 范围的随机数时,如果随机数范围不能被 N 整除,某些值会出现得更频繁。例如用 [0, 256) 取模 100,0-55 出现概率为 2/256,56-99 为 1/256。拒绝采样通过丢弃超范围的值来解决这个问题。

Q:如何生成符合正态分布的随机数?

A>可以使用 Box-Muller 变换:生成两个均匀分布的随机数 U1 和 U2,通过公式 Z = √(-2·ln(U1)) · cos(2π·U2) 转换为标准正态分布。本工具目前支持均匀分布,正态分布功能即将推出。

Q:生成的随机数可以重现吗?

A>CSPRNG 模式不可重现(这正是其安全性的体现)。如果需要可重现的随机序列(如单元测试),建议使用 Mulberry32 等带种子的 PRNG 算法,相同种子产生相同序列。

Q:这个工具一次能生成多少个随机数?

A>单次最多生成 1000 个随机数。如需更多,可以多次生成并合并。批量生成时会自动检查是否有重复值(在"不重复"模式下),如果请求数量超过可用范围,工具会提示范围不足。

🔥 同类热门工具

🎭
假数据生成器
假数据生成器 - 快速生成姓名、手机号、邮箱、地址、身份证号...
🛠️
安全密码生成器
免费在线安全密码生成器,支持自定义长度、字符类型,一键生成高...
👤
随机头像生成器
随机头像生成器,生成独特的几何图形头像、像素头像或字母头像,...
📅
随机日期生成器
随机日期生成器,生成指定范围内的随机日期或时间,支持批量生成...
👥
随机分组工具
在线随机分组工具,输入人员名单,按组数或每组人数自动随机分组...
🌐
随机IP生成器
随机IP地址生成器,生成随机IPv4或IPv6地址,支持批量...
🎯
随机点名抽号工具
随机点名抽号工具,随机抽取名字或号码,支持批量导入名单、不重...
随机昵称生成器
随机昵称用户名生成器,生成各种风格的网名和用户名:可爱、霸气...
💬
随机名言格言生成器
随机名言格言生成器,随机展示名人名言、励志语录、古诗词等,每...
🔤
随机字符串生成器
随机字符串生成器,生成自定义长度的随机字符串,支持数字、大小...