如何测试生成随机数的方法实际生成随机数?是否有一些($tested_method, rand)
种语法?
具体来说,我指的是这个ping生成器方法:
sub _create_ping_number {
my ( $ping, @random_array );
my $MAX = 100000;
my $random_counter = 0;
if ( $random_counter == $MAX ) {
@random_array = ();
$random_counter = 0;
}
until ( !undef( $random_array[ $ping = int( rand($MAX) ) ] ) ) { }
$random_array[$ping] = 1;
$random_counter++;
return $ping;
}
答案 0 :(得分:1)
mob的评论中的链接提供了关于断言数据源是随机的困难的详细信息。
对于您的单元测试,您可能最好在测试设置中使用srand
(从技术上讲,这是一个“白盒”测试),并依赖rand()
的行为很好的事实众所周知。据我所知,这是正常做法,除非你想测试你所写的PRNG或熵源。