Unbias a random generator: Difference between revisions
Content added Content deleted
(→{{header|REXX}}: added the REXX language. -- ~~~~) |
(Add NetRexx implementation) |
||
Line 837: | Line 837: | ||
6 0.16620 0.49805 |
6 0.16620 0.49805 |
||
</pre> |
|||
=={{header|NetRexx}}== |
|||
{{trans|Java}} |
|||
<lang NetRexx>/* NetRexx */ |
|||
options replace format comments java crossref symbols binary |
|||
runSample(arg) |
|||
return |
|||
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|||
method biased(n = int) public static returns boolean |
|||
return Math.random() < 1.0 / n |
|||
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|||
method unbiased(n = int) public static returns boolean |
|||
a = boolean |
|||
b = boolean |
|||
loop until a \= b |
|||
a = biased(n) |
|||
b = biased(n) |
|||
end |
|||
return a |
|||
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|||
method runSample(arg) private static |
|||
parse arg Mx . |
|||
if Mx.length <= 0 then Mx = 50000 |
|||
M = int Mx |
|||
loop n = int 3 to 6 |
|||
c1 = int 0 |
|||
c2 = int 0 |
|||
loop for M |
|||
if biased(n) then c1 = c1 + 1 |
|||
if unbiased(n) then c2 = c2 + 1 |
|||
end |
|||
say Rexx(n).right(3)':' Rexx(100.0 * c1 / M).format(6, 2)'%' Rexx(100.0 * c2 / M).format(6, 2)'%' |
|||
end n |
|||
return |
|||
</lang> |
|||
'''Output:''' |
|||
<pre> |
|||
3: 32.78% 49.98% |
|||
4: 24.72% 50.31% |
|||
5: 19.95% 50.34% |
|||
6: 17.20% 50.20% |
|||
</pre> |
</pre> |
||