Unbias a random generator: Difference between revisions
Rename Perl 6 -> Raku, alphabetize, minor clean-up
Thundergnat (talk | contribs) (Rename Perl 6 -> Raku, alphabetize, minor clean-up) |
|||
Line 395:
5: 19.958% 49.987%
6: 16.660% 49.890%</pre>
=={{header|Elena}}==
{{trans|C#}}
Line 713 ⟶ 714:
# [ 5, 200532, 500448 ],
# [ 6, 166746, 499859 ] ]</lang>
=={{header|Go}}==
<lang go>package main
Line 1,290 ⟶ 1,292:
Bias 5: 7993 2007, 79.93+-0.401% fixed: 1564 1597, 49.478+-0.889%
Bias 6: 8309 1691, 83.09+-0.375% fixed: 1403 1410, 49.8756+-0.943%</pre>
=={{header|Perl 6}}==▼
{{trans|Perl}}▼
<lang perl6>sub randN ( $n where 3..6 ) {▼
return ( $n.rand / ($n - 1) ).Int;▼
}▼
sub unbiased ( $n where 3..6 ) {▼
my $n1;▼
repeat { $n1 = randN($n) } until $n1 != randN($n);▼
return $n1;▼
}▼
my $iterations = 1000;▼
for 3 .. 6 -> $n {▼
my ( @raw, @fixed );▼
for ^$iterations {▼
@raw[ randN($n) ]++;▼
@fixed[ unbiased($n) ]++;▼
}▼
printf "N=%d randN: %s, %4.1f%% unbiased: %s, %4.1f%%\n",▼
$n, map { .perl, .[1] * 100 / $iterations }, @raw, @fixed;▼
}</lang>▼
Output:<pre>N=3 randN: [676, 324], 32.4% unbiased: [517, 483], 48.3%▼
N=4 randN: [734, 266], 26.6% unbiased: [489, 511], 51.1%▼
N=5 randN: [792, 208], 20.8% unbiased: [494, 506], 50.6%▼
N=6 randN: [834, 166], 16.6% unbiased: [514, 486], 48.6%</pre>▼
=={{header|Phix}}==
Line 1,610 ⟶ 1,584:
Count: 6 => Biased: 17%; Unbiased: 50%.
</pre>
(formerly Perl 6)
▲{{trans|Perl}}
▲<lang perl6>sub randN ( $n where 3..6 ) {
▲ return ( $n.rand / ($n - 1) ).Int;
▲}
▲sub unbiased ( $n where 3..6 ) {
▲ my $n1;
▲ repeat { $n1 = randN($n) } until $n1 != randN($n);
▲ return $n1;
▲}
▲my $iterations = 1000;
▲for 3 .. 6 -> $n {
▲ my ( @raw, @fixed );
▲ for ^$iterations {
▲ @raw[ randN($n) ]++;
▲ @fixed[ unbiased($n) ]++;
▲ }
▲ printf "N=%d randN: %s, %4.1f%% unbiased: %s, %4.1f%%\n",
▲ $n, map { .perl, .[1] * 100 / $iterations }, @raw, @fixed;
▲}</lang>
▲Output:<pre>N=3 randN: [676, 324], 32.4% unbiased: [517, 483], 48.3%
▲N=4 randN: [734, 266], 26.6% unbiased: [489, 511], 51.1%
▲N=5 randN: [792, 208], 20.8% unbiased: [494, 506], 50.6%
▲N=6 randN: [834, 166], 16.6% unbiased: [514, 486], 48.6%</pre>
=={{header|REXX}}==
|