Rand 通常指编程语言中的 rand() 随机数生成函数,是程序设计中产生伪随机数的核心工具,广泛用于模拟、加密、抽样与算法测试等场景。作为计算机科学中'随机性'这一概念最直观的实现入口,rand 既是初学者接触概率编程的第一课,也是密码学与系统安全中讨论最多的隐患来源之一——因为绝大多数 rand 实现只是确定性的伪随机数生成器(PRNG),并非真正不可预测。
rand 与随机性的近期讨论
当前焦点与观察点
围绕 rand 的讨论当前集中在三个方向。其一是安全性:许多事故源于开发者将 rand() 直接用于密钥或令牌生成,而标准库实现并非密码学安全,社区持续呼吁区分'统计随机'与'安全随机'。其二是可复现性:机器学习实验依赖固定随机种子,但种子固定后模型是否真正'确定'仍取决于硬件与库版本,这是复现性争议的老问题。其三是随机性的哲学与科学边界:从 Marcus 的演示可以看出,'多随机才算随机'正在被更严谨的度量框架取代。对开发者而言,务实的选择是:模拟与抽样用普通 rand 即可,涉及安全与公平性的场景则必须使用 CSPRNG。