可能重复: 我应该如何测试随机性?
在我们的应用程序中要开发的特性之一是允许用户单击一个按钮,该按钮将从数据库中注册的值(通常为5-10)中随机选择一个元素。随机性不需要是安全的或科学上统一的,但我们确实需要它在某种程度上是不可预测的,而不是明显地偏向其中的一个价值。
有什么建议可以为这个特性编写一个好的单元测试和功能测试吗?
发布于 2012-08-18 06:12:23
您可以在2个并行进程上使用相同的种子,如果它们在相同的时间框架内启动(在GHz处理器术语中),它们将具有与静态种子相同的种子。或者,大多数语言,如果使用相同的静态种子,将具有相同的数值生成(Java是这种API风格的一个很好的RNG示例)。
为了克服这一内在的静态可预见性,RNG的内部系统时间通常被播种到微或纳米秒范围内,在长期内具有很高的不可预测性,并且在短期内几乎不可能根据时间进行预测,因为它是由内部晶体时钟周期构成的。
顺便说一句:机器产生的所有数字都是伪随机的,但足够接近政府的工作。
要获得一个数值范围,只需取RNG值[0-1]的整数模(integer_range_max)。所以RNG * Modulo % Modulo会给你这个范围。
https://softwareengineering.stackexchange.com/questions/161389
复制相似问题