fork download
  1. import System.Random
  2. import Data.List
  3.  
  4. randomDbls :: StdGen -> [ Double ]
  5. randomDbls= randomRs (0,1)
  6.  
  7. chooseItem is ws r = let
  8. folder a b = a : map ( + a ) b
  9. selecter r ( i, ( f, t ) ) = f <= r && r < t
  10. ts = foldr folder [ ] ws
  11. fs = 0 : ts
  12. ifts = zip is $ zip fs ts
  13. in fst $ head $ filter ( selecter r ) ifts
  14.  
  15. main = do
  16. rds <- ( return . randomDbls ) =<< getStdGen
  17. print $ map (chooseItem ['A'..'C' ] [0.4,0.5,0.1] ) $ take 100 rds
Success #stdin #stdout 0.01s 5460KB
stdin
Standard input is empty
stdout
"ACBCBBBBBAABBABBBCBABABAACABBBBBBABBBBAABBABBBBBABABBABBAABCBAAAACAABABABCAABBABAAAAAAAABBBABAAACABB"