Xorshift 法

| | コメント(7) | トラックバック(0)

とっても速い擬似乱数生成器。Xorshift RNGs - lucille development blog 辺りを参考に。周期も適当に長く取れるので、再現性が必要なゲームにいいかもね。データの動的生成にも使えるかな?

(function (namespace) {
/**
* Xorshift128 の新しいインスタンスを初期化します。
*
* @param Number x 種その1。
* @param Number y 種その2。
* @param Number z 種その3。
* @param Number w 種その4。
*/
namespace.Xorshift128 = function (x, y, z, w)
{
var u = void(0);
this.x = x === u ? 123456789 : 0 + x;
this.y = y === u ? 362436069 : 0 + y;
this.z = z === u ? 521288629 : 0 + z;
this.w = w === u ? 88675123 : 0 + w;

if ((this.x | this.y | this.z | this.w) == 0)
{
throw new Error("x, y, z, w 全部 0 は、らめ!");
}
}

/**
* 0 以上 1 未満の乱数を返します。
*
* @return Number 0 以上 1 未満の値。
*/
namespace.Xorshift128.prototype.next = function ()
{
return this.nextUInt32() / 4294967296;
}

/**
* 0 以上 4294967296 未満の乱数を返します。
*
* @return Number 0 以上 4294967296 未満の値。
*/
namespace.Xorshift128.prototype.nextUInt32 = function ()
{
var t = this.x ^ this.x << 11;
this.x = this.y;
this.y = this.z;
this.z = this.w;
this.w = (this.w ^ this.w >>> 19) ^ (t ^ t >>> 8);

return this.w >>> 0;
}
})(window);

///////////////////////////////////////////////
var xs = new Xorshift128();
xs.next();
xs.nextUInt32();

トラックバック(0)

このブログ記事を参照しているブログ一覧: Xorshift 法

このブログ記事に対するトラックバックURL: http://zenith.sakura.ne.jp/mt/mt-tb.cgi/21

コメント(7)

That is some inspirational stuff. Never knew that thoughts might be this varied. Many thanks for all of the enthusiasm to offer such beneficial data right here.

This article may possibly be mentioned on Twitter by someone. genuinely?

Great post! I'll subscribe proper now wth my feedreader computer software!

Funny, I was discussing this thing with my older sister the other day, now I'll have one particular much more argument in my hand when it'll appear to confrontation when once more.

super fornøyd, super snygga och sköna att gå i!

Interestingly, my day on this matter, and my sister, I have a special multi-parameter in my hands when it appears confrontation again.

Good suggestions and discussion, I will get this amazing for me. Thank you!

コメントする


画像の中に見える文字を入力してください。

このブログ記事について

このページは、zenithが2008年3月30日 00:12に書いたブログ記事です。

ひとつ前のブログ記事は「Flex イ゛ェアアアエフェクト」です。

次のブログ記事は「プログラマがコードのコンポーネント化をしたがる理由」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 4.12