随机数生成器

在线随机数生成器,自定义最小值、最大值和生成个数,可设置是否允许重复、结果排序,使用密码学随机数,适合抽奖、摇号、分组和随机抽样。

功能介绍

本工具可生成指定范围、指定个数的随机数,支持是否允许重复、是否排序、加密安全随机等选项,生成结果可一键复制。

使用方法

  1. 输入你需要的随机数最小值和最大值;
  2. 输入需要生成的随机数个数;
  3. 根据需要勾选选项:允许重复、结果排序、使用加密安全随机;
  4. 点击「生成随机数」按钮即可得到结果,点击「复制结果」可复制生成的随机数。

实现原理

什么是加密安全随机数?和普通随机数有什么区别?

普通的Math.random()生成的伪随机数足够一般场景使用,但不适合安全性要求高的场景(如生成密码、密钥等)。加密安全随机使用浏览器提供的加密学安全随机算法,随机性更强,不可预测,适合安全性要求高的场景。

不允许重复的随机数是怎么生成的?

不允许重复时使用Fisher-Yates洗牌算法,先把范围内所有整数按顺序生成,再均匀随机打乱整个序列,最后取出前N个数,保证每个数字只出现一次,而且每个排列出现的概率完全相等。

为什么不允许重复时生成个数不能超过范围大小?

如果不允许重复,每个数字只能出现一次,所以生成个数不可能超过范围内数字的总个数。比如范围是1到10,最多只能生成10个不重复的随机数。

生成的随机数包含最小值和最大值本身吗?

包含,生成范围是闭区间,最小值和最大值本身也会被包含在可选范围内。比如你设置最小值1,最大值10,1和10都有可能被生成。