随机数生成就是在给定范围内按均匀概率取出整数或小数,常用于抽签、分组、抽样和程序测试。下面说明代码写法。
用代码制作随机数
下面是用 Python 实现的写法,可以按需要修改:
import random, secrets
print(random.randint(1, 100)) # 普通伪随机
print(random.sample(range(1, 101), 5)) # 不重复取 5 个
print(secrets.randbelow(100) + 1) # 安全随机 1–100
示例
输入:范围 10–20,个数 3,不重复
生成结果:示例:18、14、10
说明:区间共 11 个整数,每个数被抽中的概率为 1/11,期望值为 15;不重复抽取 3 个的排列数为 990。
与相关概念的区别
伪随机数(PRNG)速度快、可复现,适合模拟和游戏;安全随机数(CSPRNG)不可预测,适合密码、令牌和抽奖。真随机数来自物理噪声,一般经由操作系统熵池间接使用。
计算方法
在 [a,b] 中取整数,样本空间大小是 n = b − a + 1。单次取到某个数的概率是 1/n,期望值是 (a+b)/2。不重复地取 k 个时,可能的结果数是排列数 n!/(n−k)!(考虑顺序)或组合数 C(n,k)(不考虑顺序)。例如 1–100 不重复取 5 个,组合数 C(100,5)=75,287,520。
相关标准
常见编程语言的随机函数:Python random 模块使用 Mersenne Twister,适合模拟,不适合安全用途;secrets 模块和 os.urandom 提供安全随机数。浏览器中 Math.random 是普通伪随机,crypto.getRandomValues 是安全随机。NIST SP 800-90A 规定了确定性随机比特生成器的标准算法。
本站的随机数生成器工具可以直接在网页中使用,无需安装,适合快速得到和核对结果。
常见问题
【可以设置不重复吗?】可以,不重复相当于无放回抽样,个数不能超过范围内的整数个数。
【抽奖用哪种随机数?】建议使用安全随机源,并公开规则、记录过程,以便事后核查。
【范围包含两端吗?】通常是闭区间,最小值和最大值都可能被抽到,使用前确认工具说明。
文中示例可以在本站对应工具中核对。
标签: 实用工具