2015-01-20 2 views
0

Я использую следующий код Haskell, чтобы написать файл в один миллион псевдослучайных бит:Как получить семя, используемое RNG Haskell?

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