随机数(Random Number)

随机数在计算机科学中扮演着重要角色,广泛应用于模拟、抽样、游戏、密码学、机器学习、算法设计(如随机化快速排序)等领域。
计算机本身是确定性的系统,因此通常生成的是伪随机数——看似随机但实际由确定算法产生的序列。在某些高安全要求场景(如密钥生成)则需要真随机数,来源于物理过程。

随机数的类型

类型描述来源可否重现典型用途
真随机数基于物理噪声、量子效应、热噪声等不可预测现象硬件随机数发生器(HRNG)不可重现密码学、彩票、一次一密
伪随机数由数学算法产生的确定性序列,但通过统计测试伪随机数生成器(PRNG)可重现(给定种子)模拟、游戏、蒙特卡洛方法
密码学安全伪随机数满足额外不可预测性要求的PRNG,即使暴露部分输出也难以推断前后值CSPRNG(如ChaCha20、AES-CTR)可重现(种子保密)会话密钥、随机数Nonce

随机数实现

#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
int main() {
   srand(time(0)); // 使用当前时间作为种子
   cout<<rand(); // 生成随机数
   return 0;
}

范围公式:随机生成a~b之间的随机数

rand() % (b - a + 1) + a;

默认范围:rand() 的默认范围视系统而定0~32767或2147483647