功能介绍
本工具可生成指定范围、指定个数的随机数,支持是否允许重复、是否排序、加密安全随机等选项,生成结果可一键复制。
使用方法
- 输入你需要的随机数最小值和最大值;
- 输入需要生成的随机数个数;
- 根据需要勾选选项:允许重复、结果排序、使用加密安全随机;
- 点击「生成随机数」按钮即可得到结果,点击「复制结果」可复制生成的随机数。
实现原理
- 允许重复:每个随机数独立生成,允许同一个数字出现多次;
- 不允许重复:使用Fisher-Yates洗牌算法打乱范围内所有数字,再取前N个,保证每个数字只出现一次且概率均匀;
- 加密安全随机:使用浏览器提供的加密学安全随机数生成器
crypto.getRandomValues,适合对随机性要求更高的场景;
- 结果排序:生成后按从小到大对随机数进行排序。
什么是加密安全随机数?和普通随机数有什么区别?
普通的Math.random()生成的伪随机数足够一般场景使用,但不适合安全性要求高的场景(如生成密码、密钥等)。加密安全随机使用浏览器提供的加密学安全随机算法,随机性更强,不可预测,适合安全性要求高的场景。
不允许重复的随机数是怎么生成的?
不允许重复时使用Fisher-Yates洗牌算法,先把范围内所有整数按顺序生成,再均匀随机打乱整个序列,最后取出前N个数,保证每个数字只出现一次,而且每个排列出现的概率完全相等。
为什么不允许重复时生成个数不能超过范围大小?
如果不允许重复,每个数字只能出现一次,所以生成个数不可能超过范围内数字的总个数。比如范围是1到10,最多只能生成10个不重复的随机数。
生成的随机数包含最小值和最大值本身吗?
包含,生成范围是闭区间,最小值和最大值本身也会被包含在可选范围内。比如你设置最小值1,最大值10,1和10都有可能被生成。