2012-09-14 4 views
4

Data.Random.Source.IO을 사용하여 멀티 플랫폼 방식으로 난수를 생성하는 방법을 알아낼 수 없습니다.random-fu를 사용하여 플랫폼에 독립적 인 코드로 Haskell에서 임의의 숫자를 생성하려면 어떻게해야합니까?

나는 Data.Random.Source.DevRandom를 사용하여 유닉스에서 난수를 생성 할 수 있으며, 예 Data.Random.Source.MWC를 사용하여 Windows에 대한 GitHub의 문서에 존재하지만, Data.Random.Source.IO를 사용에 대한 예제 코드가 없습니다.

+0

모든 해당 모듈이'IO'위한'MonadRandom' 인스턴스를 정의하는 것입니다 않는 목록에서 균일 한 난수를 생성 할 수 있습니다. 다른 인스턴스와 마찬가지로 사용합니다. –

+0

'MonadRandom'을 사용하는 작업 스 니펫을 줄 수 있습니까? 내 코드에서'DevRandom'을'MonadRandom'으로 바꾸거나 찾아 보려고했으나 작동하지 않습니다. – mcandre

답변

4

좋아, 난 당신이 그냥 MonadRandom IO에 적합한 인스턴스를 정의 Data.Random.Source.IOsource에서 볼 수 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 

를 사용하도록 github에 예를 변환했다.

당신은`사용 DevRandom` 또는`MWC`,

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

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

나는 거의 * 그것을 얻는다. '[0 .. 9]'사이에 일정한 난수를 생성하도록 예제를 수정할 수 있습니까? – mcandre

+0

@mcandre 추가 한 예를 참조하십시오. – Satvik

+0

저를 위해 일하십시오! 고마워 친구! – mcandre