Copyright | (c) OSANAI Kazuyoshi 2019 |
---|---|
License | BSD 3-Clause |
Maintainer | osmium.k@gmail.com |
Stability | experimental |
Portability | GHC, word size 64bit |
Safe Haskell | None |
Language | Haskell2010 |
Simple implementation of xorshift+.
>>>
gen <- genXorshiftPlusInt 1
>>>
getInt gen
2455688531189531812
Synopsis
- type XorshiftPlus = XorshiftPlusST RealWorld
- genXorshiftPlusWord :: Word -> IO XorshiftPlus
- genXorshiftPlusInt :: Int -> IO XorshiftPlus
- getWord :: XorshiftPlus -> IO Word
- getInt :: XorshiftPlus -> IO Int
- getDouble :: XorshiftPlus -> IO Double
- data XorshiftPlusST s
- genXorshiftPlusWordST :: Word -> ST s (XorshiftPlusST s)
- getWordST :: XorshiftPlusST s -> ST s Word
- splitMix64Next :: Word# -> Word#
IO version
type XorshiftPlus = XorshiftPlusST RealWorld Source #
Random state
Generator
:: Word | random seed |
-> IO XorshiftPlus |
Generate a new random state by a Word seed.
:: Int | random seed |
-> IO XorshiftPlus |
Generate a new random state by an Int seed.
Values
Low level, ST version
data XorshiftPlusST s Source #
Random state
genXorshiftPlusWordST :: Word -> ST s (XorshiftPlusST s) Source #
Generate a new random state by a Word seed.
Internal
splitMix64Next :: Word# -> Word# Source #
For first return value.
>>>
W# (splitMix64Next 1##)
10451216379200822465