プログラミングのお題スレ Part20at TECHプログラミングのお題スレ Part20 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト1028:デフォルトの名無しさん 22/11/12 01:53:40.01 Y/i2pfZ3.net お題 配列データと、同じ長さの確率の配列(合計値1)が与えられた時に、対応する確率で配列からデータを出力せよ 例 aa,bb,cc 0.4,0.5,0.1 →aa 40%, bb 50%, cc 10%で出力 1029:デフォルトの名無しさん 22/11/12 08:50:36.22 yCEPOpQl.net >>983 Ruby a = %w[aa bb cc] p = [0.4, 0.5, 0.1] f = -> (a, p) { r = rand; a[(0..a.size-2).find{ r < p[0.._1].sum } || a.size - 1] } 10.times{ print f[a, p] } # => aabbccbbaaaaaabbbbbb 1030:デフォルトの名無しさん 22/11/12 10:10:20.03 g2vYgSbJ.net >>983 Haskell https://ideone.com/UErkR7 import System.Random import Data.List randomDbls :: StdGen -> [ Double ] randomDbls= randomRs (0,1) chooseItem is ws r = let folder a b = a : map ( + a ) b selecter r ( i, ( f, t ) ) = f <= r && r < t ts = foldr folder [ ] ws fs = 0 : ts ifts = zip is $ zip fs ts in fst $ head $ filter ( selecter r ) ifts main = do rds <- ( return . randomDbls ) =<< getStdGen print $ map (chooseItem ['A'..'C' ] [0.4,0.5,0.1] ) $ take 100 rds 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch