Anonymous user
Unbias a random generator: Difference between revisions
→{{header|Haskell}}: Changed to universal monadic solution
SqrtNegInf (talk | contribs) m (→{{header|Perl 6}}: plain arrays as input to 'map') |
(→{{header|Haskell}}: Changed to universal monadic solution) |
||
Line 681:
=={{header|Haskell}}==
<lang haskell>import Control.Monad.Random
import
import Text.Printf
randN ::
randN n =
-- works for any random generator
unbias :: (MonadRandom m, Eq x) => m x -> m x
unbias g
if
main
where
showCounts b = do
r2 <- counts (unbias (randN b))
printf "n = %d biased: %d%% unbiased: %d%%\n" b r1 r2
counts g = (`div` 100) . length . filter (== 1) <$> replicateM 10000 g</lang>
Output:
<pre>
n = 3 biased: 33
n = 4 biased:
n = 5 biased: 19
n = 6 biased: 16
</pre>
|