Unbias a random generator: Difference between revisions
Content added Content deleted
(Add Factor example) |
|||
Line 588: | Line 588: | ||
5: 19.98% 50.00% |
5: 19.98% 50.00% |
||
6: 16.64% 49.69%</pre> |
6: 16.64% 49.69%</pre> |
||
=={{header|Factor}}== |
|||
<lang factor>USING: formatting kernel math math.ranges random sequences ; |
|||
IN: rosetta-code.unbias |
|||
: randN ( n -- m ) random zero? 1 0 ? ; |
|||
: unbiased ( n -- m ) |
|||
dup [ randN ] dup bi 2dup = not |
|||
[ drop nip ] [ 2drop unbiased ] if ; |
|||
: test-generator ( quot -- x ) |
|||
[ 1,000,000 dup ] dip replicate sum 100 * swap / ; inline |
|||
: main ( -- ) |
|||
3 6 [a,b] [ |
|||
dup [ randN ] [ unbiased ] bi-curry |
|||
[ test-generator ] bi@ "%d: %.2f%% %.2f%%\n" printf |
|||
] each ; |
|||
MAIN: main</lang> |
|||
{{out}} |
|||
<pre> |
|||
3: 33.25% 50.03% |
|||
4: 24.98% 50.02% |
|||
5: 20.03% 50.04% |
|||
6: 16.66% 49.99% |
|||
</pre> |
|||
=={{header|Fortran}}== |
=={{header|Fortran}}== |