Unbias a random generator: Difference between revisions

Initial PL/I version
(Initial PL/I version)
Line 972:
5: 20.04 % 49.75 %
6: 16.32 % 49.02 %</pre>
 
=={{header|PL/I}}==
<lang PL/I>
test: procedure options (main); /* 20 Nov. 2012 */
 
randN: procedure(N) returns (bit (1));
declare N fixed (1);
declare random builtin;
declare r fixed (2) external initial (-1);
if r >= 0 then do; r = r-1; return ('0'b); end;
r = random()*2*N;
return ('1'b);
end randN;
 
random: procedure returns (bit(1));
declare (r1, r2) bit (1);
do until (r1 ^= r2);
r1 = randN(N); r2 = randN(N);
end;
return (r1);
end random;
 
declare (biasedrn, unbiasedrn) (100) bit (1);
declare N fixed (1);
 
put ('N Biased Unbiased (tally of 100 random numbers)');
do N = 3 to 6;
biasedrn = randN(N); unbiasedrn = random;
put skip edit (N, sum(biasedrn), sum(unbiasedrn)) (F(1), 2 F(10));
end;
 
end test;
</lang>
Results:
<pre>
N Biased Unbiased (tally of 100 random numbers)
3 24 42
4 18 47
5 16 41
6 11 53
</pre>
 
=={{header|PureBasic}}==