2015-01-20 9 views
0

그러나Haskell의 RNG에서 사용되는 시드를 얻는 방법은 무엇입니까? 내가 백만 의사 난수 비트의 파일을 작성하는 다음 하스켈 코드를 사용하고

import System.Random 
rbits= do 
    g <- getStdGen 
    writeFile "haskellbits.txt" (take 1000000 (randomRs ('0', '1') g)) 

을, 나는 또한 순서를 가져 오는 데 사용 씨앗을 쓰기에 관심이 있어요. 어떻게 출력 할 수 있습니까?

+1

음,'StdGen'은'Show' 인스턴스를 가지고 있습니다. 간단히'print g '를 사용할 수 있습니다. (코드를 정확하게 들여 깔고 모든 것을 복사했는지 확인하십시오.) – Zeta

+0

또한 다른 생성기 사용을 고려하십시오. Haskell은 더 이상 공식적인 것을 지정하지 않고'StdGen'은 많은 결점이 있습니다. –

+0

다른 발전기를 비교하여 어떤 시나리오가 가장 적합한 지 확인하려고합니다. @ Thomas는'stdGen'에 어떤 종류의 결함이 있습니까? – user2962685

답변

1
import System.Random 
outputSeed = do 
    g <- getStdGen 
    print g 

이 두 개의 번호와 같은 씨앗을 인쇄합니다 (난 그냥 그것을 시도하고 출력 1010512508 1)

또한 임의의 씨앗으로 다시 문자열을 설정하는 read를 사용할 수 있습니다. 원래 문자열이 해당 형식이면 동일한 시드를 반환합니다. 그러나 다른 문자열을 사용하면 시드를 생성하기 위해 다른 작업을 수행하게됩니다.

Prelude System.Random> read "111 112" :: StdGen 
111 112 
Prelude System.Random> read "blabla" :: StdGen 
37214 1