Unbias a random generator: Difference between revisions

Content added Content deleted
Line 397: Line 397:
=={{header|Elena}}==
=={{header|Elena}}==
{{trans|C#}}
{{trans|C#}}
ELENA 3.3 :
ELENA 3.4 :
<lang elena>import extensions.
<lang elena>import extensions.

int extension $op
extension<int> op
{
{
bool randN
bool randN
= randomGenerator nextInt(self) == 0.
= randomGenerator nextInt(self) == 0.
bool unbiased
bool unbiased
[
[
bool flip1 := self randN.
bool flip1 := self randN.
bool flip2 := self randN.
bool flip2 := self randN.
while (flip1 == flip2)
while (flip1 == flip2)
[
[
Line 415: Line 415:
flip2 := self randN.
flip2 := self randN.
].
].
^ flip1
^ flip1
]
]
}
}

program =
public program
[
[
3 to:6 do(:n)<int>
3 to:6 do(:n)<int>
Line 428: Line 428:
int unbiasedZero := 0.
int unbiasedZero := 0.
int unbiasedOne := 0.
int unbiasedOne := 0.
0 till:100000 do(:i)
0 till:100000 do(:i)
[
[
Line 434: Line 434:
if (n unbiased) [ unbiasedOne += 1 ]; [ unbiasedZero += 1 ]
if (n unbiased) [ unbiasedOne += 1 ]; [ unbiasedZero += 1 ]
].
].

console
console
printLineFormatted("(N = {0}):" padRight(17) + "# of 0"$9"# of 1"$9"% of 0"$9"% of 1", n);
printLineFormatted("(N = {0}):" padRight(17) + "# of 0"$9"# of 1"$9"% of 0"$9"% of 1", n);
Line 442: Line 442:
unbiasedZero, unbiasedOne, unbiasedZero / 1000, unbiasedOne / 1000).
unbiasedZero, unbiasedOne, unbiasedZero / 1000, unbiasedOne / 1000).
]
]
].</lang>
]</lang>
{{out}}
{{out}}
<pre>
<pre>