Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import System.IO
- import System.Random
- import Data.List
- import Data.Int
- import Data.Bits
- import Control.Monad
- makeMask p g = numMask 50 g
- where
- numMask :: Int -> StdGen -> [Int64]
- numMask 0 _ = []
- numMask i g = let (elem, ng) = singleMask p g in elem `seq` ng `seq` elem : numMask (i-1) ng
- singleMask :: Int -> StdGen -> (Int64,StdGen)
- singleMask p g = foldl' (\(a,g) i -> let (c,ng) = g `seq` randomR (1,10000) g
- in c `seq` ng `seq` (if c <= p then setBit a i else a , ng) )
- (0,g)
- [1..39]
- main :: IO ()
- main = replicateM_ 10000 $! do g <- newStdGen; print $ makeMask 10 g
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement