如何测试生成随机数的方法确实生成随机数

时间:2013-08-13 03:21:03

标签: perl unit-testing testing

如何测试生成随机数的方法实际生成随机数?是否有一些($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;
}

1 个答案:

答案 0 :(得分:1)

mob的评论中的链接提供了关于断言数据源是随机的困难的详细信息。

对于您的单元测试,您可能最好在测试设置中使用srand(从技术上讲,这是一个“白盒”测试),并依赖rand()的行为很好的事实众所周知。据我所知,这是正常做法,除非你想测试你所写的PRNG或熵源。