2012-09-14 48 views
4

我不知道如何使用Data.Random.Source.IO以多平臺方式生成隨機數。如何在Haskell中使用random-fu和平臺不可知代碼生成隨機數?

我可以使用Data.Random.Source.DevRandom產生Unix的隨機數,並有使用Data.Random.Source.MWC GitHub的文檔for Windows中的一個例子,但對於使用Data.Random.Source.IO沒有示例代碼。

+0

所有這些模塊確實是定義'IO'一個'MonadRandom'例如,使用'DevRandom'或'MWC'。所以你像其他任何實例一樣使用它。 –

+0

你可以給一個使用'MonadRandom'的工作片段嗎?我嘗試在我的代碼中用'MonadRandom'查找/替換'DevRandom',但這不起作用。 – mcandre

回答

4

好,我已經轉換GitHub的例子使用Source.IO

import Data.Random 
import Data.Random.Source.IO 


logNormal :: Double -> Double -> RVar Double 
logNormal mu sigmaSq = do 
    x <- normal mu sigmaSq 
    return (exp x) 

main = sample (logNormal 5 1) >>= print 

您可以在Data.Random.Source.IOsource,它只是定義了MonadRandom IO合適的實例看。

您可以生成從列表中均勻隨機數作爲

import Data.Random 
import Data.Random.Source.IO 

main = sample (randomElement [0..9]) >>= print 
+0

我*幾乎*得到它。你能修改你的例子來在'[0 .. 9]'之間生成一個統一的隨機數嗎? – mcandre

+0

@mcandre查看我添加的示例。 – Satvik

+0

適合我!多謝,夥計! – mcandre