随机数生成器测试全解析
1. 随机数生成器测试的微妙之处
在探讨随机数生成器(RNG)的测试之前,我们先从美的定义说起。经典的美定义认为,美兼具复杂性与统一性。就像绘画,黑色画布有统一性但缺乏复杂性,随机泼溅的画布有复杂性却无统一性,而米开朗基罗绘制的西斯廷教堂天花板壁画,既有丰富细节又有秩序与平衡,展现了复杂性与统一性,堪称美作。有些美的作品易于欣赏,因其复杂性和统一性显而易见,如西斯廷教堂壁画;而有些则需更多知识才能体会,如现代爵士乐,其复杂性明显,但统一性非外行所能轻易察觉。随机数生成器的测试或许更像现代爵士乐,复杂性易见,统一性却需深入了解。
软件随机数生成器严格来说是伪随机数生成器,因其由确定性程序输出,并非真正随机。虽其输出并非真随机,但有些RNG能出色地生成在很多情况下可视为真正随机的数列。然而,如何判断RNG的输出与真正随机源的输出足够相似呢?
一个好的RNG,仅看输出且不重启序列时,会让我们觉得输出是随机的。这也暗示了RNG测试的微妙性:RNG的要求存在矛盾,从某一角度看输出应不可预测,从另一角度却完全可预测。测试需验证生成器从用户应用角度具备正确属性,同时不受偶然属性干扰。
RNG的优劣取决于其应用场景。例如,一个生成器用于模拟时可能被视为高质量,但用于加密则可能不可接受。这里主要探讨统计质量测试,不涉及加密安全测试。
假设要生成3到4之间的随机值,若程序总返回3,显然不符随机序列的概念,因为随机值应在某种程度上不可预测,应有所波动。若程序生成3, 3.1, 3.2, …, 4, 3, 3.1, 3.2, …这样的循环序列,虽数值有变动,但可预测,也不符合要求。这引出了RNG测试微妙的另一个原因:无法判断单个值是否正确,
超级会员免费看
订阅专栏 解锁全文
907

被折叠的 条评论
为什么被折叠?



