in reply to Re: Re: Math all gone wrong...
in thread Math all gone wrong...
$seed = rand(100); for ($x=10; $x<10000000; $x=$x*10){ $error_rate = $x; print "Error rate = 1 every $x, errors = "; for ($y=0;$y<5;$y++){ errortest(); } print "\n"; } sub errortest { $errors = 0; for ($n=0;$n<1000000;$n++){ $random = int (better_random($error_rate)); if ($random == 1){$errors++} } print $errors, " "; } sub better_random { $seed = ($seed * 65539) % 2 ** 31; $this_random = $_[0] * ($seed / 2 ** 31); return $this_random; } Ouput: Error rate = 1 every 10, errors = 99259 100049 99986 99998 99818 Error rate = 1 every 100, errors = 10166 10098 10056 10107 10032 Error rate = 1 every 1000, errors = 967 1013 1009 948 1004 Error rate = 1 every 10000, errors = 96 108 112 116 104 Error rate = 1 every 100000, errors = 16 11 7 8 10 Error rate = 1 every 1000000, errors = 0 3 1 1 0
|
|---|