JavaScriptで疑似乱数生成法のXorshiftを実装してみた
※JavaScriptでは整数が符号付き32bitで有るためにマイナスの値が発生する事が有ります。
JavaScriptで使える乱数(Math.random)は希望する乱数の種が指定出来ません。
その為、常に同じパターンの乱数を順番に欲しい様な場面には使えません。
という事でXorshiftをJavaScriptで実装してみました。
xors = { x: 123456789, y: 362436069, z: 521288629, w: 88675123 }; xors.seed = function(s) { xors.w = s; } xors.rand = function() { var t = xors.x ^ (xors.x << 11); xors.x = xors.y; xors.y = xors.z; xors.z = xors.w; return xors.w = (xors.w^(xors.w>>>19))^(t^(t>>>8)); }
乱数の種を設定する場合はこの様に記述、
xors.seed(123)
乱数を取得するのはこの様に記述します。
alert(xors.rand());
関連情報
Xorshift - Wikipedia
http://ja.wikipedia.org/wiki/Xorshift
(2016/01/07 追記)
Google Chromeが採用した、擬似乱数生成アルゴリズム「xorshift」の数理 – びりあるの研究ノート
https://blog.visvirial.com/articles/575
(追記ここまで)