2006-06-12から1日間の記事一覧

組み合わせの数3

com n k = (map length $ group $ sort $ map sort $ pow n ["a","b"]) !! k where mul as bs = concat $ map (\x -> map(++ x) as) bs pow 1 xs = xs pow n xs = mul xs (pow (n-1) xs)組み合わせを実際に作って、数を数えて、二項係数配列を作って、!!で取…

組み合わせの数2

k * nCk = n * (n-1)C(k-1) より c n 0 = 1 c n k = n/k*(c(n-1)$k-1) 短いけど / が嫌な感じ。

組み合わせの数

http://haskell.g.hatena.ne.jp/hyuki/20060612/combinationこれを c n k=n^k`div`k^k where n^k=foldr(*)1[n-k+1..n]2文字節約 c n k=n^k`div`k^k where n^k=product[n-k+1..n](せこい)whereを消して c n k=product[n-k+1..n]`div`product[1..k]

組み合わせの数 独り言

二項分布を正規分布に近似して正規分布の分布関数から逆算とかすれば乱数使わなくて済むかな・・ (そこまでして組み合わせの数を求めたくない)

組み合わせの数 再び

http://haskell.g.hatena.ne.jp/hyuki/20060612/combination1行にまとめるのがありならこれでどうだヽ(´ー`)ノ c _ 0=1;c n k=(c(n-1)$k-1)*n`div`k34 byteほとんど上のと一緒だけど、計算順序を変えることで、 (/)の変わりにdivが使えることに気が付きま…

円周率モンテカルロ

ついでに円周率を。 pi' = do let t = 100000 nums <- sequence(map sequence (replicate t (replicate 2 randomFIO))) putStrLn $ show $ (fromIntegral(length(filter f nums) )/fromIntegral(t)) * 4 where f :: [Float] -> Bool f = (< 1). sum.map(^2) …

組み合わせの数4 ーモンテカルロシミュレーション版

ちょうしにのってモンテカルロシミュレーション。ある事象が確率pで起きるとき n回のうち、k回の事象が起きる確率は となる。そこで、「n回のうちk回成功」という確率をシミュレーションで求めて その後にコンビネーションを逆算する。シミュレーションの試…