并行随机数生成

时间:2018-01-10 00:41:53

标签: haskell random

我想平行地执行随机数生成的非常长的计算。

<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.inputmask/3.3.4/jquery.inputmask.bundle.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/jquery.inputmask/3.3.4/css/inputmask.css" rel="stylesheet" />
<input type="text" class="form-control credit-card-number" placeholder="Ex: 0000 0000 0000 0000" />

如何平行执行import Control.DeepSeq import Control.Parallel.Strategies import Control.Monad import System.Random.MWC import System.Random.MWC.Distributions fib 0 = 0 fib 1 = 1 fib n = fib (n - 1) + fib (n - 2) main = do gen <- createSystemRandom let params = [30, 31 .. 34] rs <- forM params $ \n -> do xs <- replicateM n $ normal 0 1 gen return $ fib n `deepseq` xs print $ withStrategy (parList rdeepseq) $ map last rs monad-parallel包裹效果不佳。

1 个答案:

答案 0 :(得分:0)

从Control.Concurrent包中尝试forkIO:

https://hackage.haskell.org/package/base-4.10.1.0/docs/Control-Concurrent.html

像这样:

rs <- forM params $ \n -> forkIO $ do