Я только что узнал о функции random
.
Насколько я понимаю, функция random
принимает значение типа, которое является экземпляром RandomGen
и возвращает случайное значение, значение которого мы можем указать. С другой стороны, mksdGen
принимает Int
и генерирует случайный генератор, которому нужна функция random
.
Я пытался генерировать случайные значения Bool
. Для этого я сделал функцию randomBool
.
randomBool :: Int -> Bool
randomBool = fst . random . mkStdGen
Тогда я нашел намного больше True
, чем False
с малыми числами.
И мне было любопытно, и я проверил его как
> length $ takeWhile randomBool [1..]
53667
Я думаю, это означает, что для первых 53667 положительных целых чисел random . mkStdGen
возвращает True
, что для меня не кажется очень случайным.
Это нормально? Или я делаю что-то не так, что облегчить True
?