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
(追記ここまで)