This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
make t/op/rand.t fail less often
authorDavid Mitchell <davem@iabyn.com>
Tue, 22 Mar 2011 00:26:33 +0000 (00:26 +0000)
committerDavid Mitchell <davem@iabyn.com>
Tue, 22 Mar 2011 00:26:33 +0000 (00:26 +0000)
test 5 grabs many random numbers, and analyses the distribution
of 0 and 1 bits in the returned values.

It currently fails if the standard deviation is > 3.3.
This means it will fail on roughly 0.1% of runs even for a good system.

Given that an individual smoke report may contain 60+ runs, and given the
number of smokers running, this means that we see false negatives
essentially every day.

Increase the SD threshold to 4.0, which means that it will now fail every
0.006% runs; i.e. go from 1 in 1,000 false positives to one in 17,000
(approx).

(Note that just increasing the number of iterations in the run doesn't
change the 0.1% run failure rate.)

t/op/rand.t

index 0d60264..24b2bf9 100644 (file)
@@ -133,7 +133,7 @@ DIAG
 
 
     #   NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE
-    # This test will fail .1% of the time on a normal system.
+    # This test will fail .006% of the time on a normal system.
     #                          also
     # This test asks you to see these hints 100% of the time!
     #   NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE
@@ -178,7 +178,7 @@ DIAG
     # (eight bits per rep)
     $dev = abs ($bits - $reps * 4) / sqrt($reps * 2);
 
-    ok( $dev < 3.3 );
+    ok( $dev < 4.0 );
 
     if ($dev < 1.96) {
        print "# Your rand seems fine. If this test failed\n";