Masashi Ishikawa's portfolio

メルセンヌ・ツイスター法による乱数生成Javascriptライブラリ

2023/04/07
typescript

メルセンヌ・ツイスタ(Mersenne Twister, MT)法

松本眞・西村拓士両氏によって1996年に発表された擬似乱数生成アルゴリズムである。 他の擬似乱数生成アルゴリズムと比べて以下の特徴がある。 (「Mersenne Twister とは?」より)

  • 従来の様々な生成法の欠点を考慮して設計されています。

  • 従来にない長周期, 高次元均等分布を持ちます。(周期が21993712^{19937} -11、623次元超立方体の中に 均等に分布することが証明されています。)

  • 生成速度がかなり速い。(処理系にもよりますが、パイプライン処理やキャッシュメモリ のあるシステムでは、Cの標準ライブラリの rand() より高速なこと もあります。なお、開発当時には cokus 版は rand() より4倍程度高速でしたが、その後 ANSI-C の rand() が LCG 法から lagged-fibonacci に 変更されたこともあり、2002年現在 rand と MT の速度差はあまりありません。)

  • メモリ効率が良い。(32ビット以上のマシン用に設計された mt19937.c は、 624ワードのワーキングメモリを消費するだけです。 1ワードは32ビット長とします。

MT法を利用したJavascsriptライブラリを開発した。



  1. 21993712^{19937} -1はメルセンヌ素数で Mersenne Twister の名前の由来になっている。 Mersenne Twister では周期サイズごとに複数の実装があるが,21993712^{19937} -1がポピュラーな実装として広く使われている。
  • メルセンヌ・ツイスタ(Mersenne Twister, MT)法
  • このエントリーをはてなブックマークに追加

←前の記事

thumbnail

最近の記事

thumbnail
thumbnail
thumbnail
thumbnail
thumbnail
記事一覧