HaskellでXorShift
整数型の無限リストという形で疑似乱数が欲しかったのでXorShiftで作ってみました。
これを作る過程でData.WordとBitsを使いましたが、使いやすくてすごく気に入った。
ちなみにC/C++の^記号がXORを意味するのを忘れていて無駄に時間を食ったのは内緒。
import Data.Word import Bits xor128 :: Word -> Word -> Word -> Word -> [Word] xor128 x y z w = w' : xor128 y z w w' where t = x `xor` (x `shiftL` 11) w' = (w `xor` (w `shiftR` 19)) `xor` (t `xor` (t `shiftR` 8))
もっと良い書き方があるかもだけど、眠いから今日はここまで。