メルセンヌ・ツイスタ

メルセンヌ・ツイスタ (Mersenne twister、通称MT) は擬似乱数列生成器 (PRNG) の1つである。1996年に国際会議で発表されたもので（1998年1月に論文掲載）松本眞と西村拓士による。既存の疑似乱数列生成手法にある多くの欠点がなく、高品質の疑似乱数列を高速に生成できる。考案者らによる実装が修正BSDライセンスで公開されている。
特徴.
「メルセンヌ・ツイスタ」は厳密にはある手法に基づいた乱数列生成式（あるいは生成法）の族を指し、内部状態の大きさや周期は設定可能である。以下の長所と短所では、メルセンヌ・ツイスタ自体、よく使われている生成法のMT19937、さらにその実装について、区別することなく述べている。
長所.
メルセンヌ・ツイスタの手法を、以前の生成法に関連付けて表現すると、一般・フィードバック・シフト・レジスタ (General Feedback Shift Register) をひねって (Twisted) 調律した (Tempered) もの（略してTTGFSR）となる（実際に、元はそのように呼んでいた）。GFSRではワード中の各ビットは独立していたが、「ひねる」ことによって各ビットの周期が合わさって長い周期を実現できるようになっている。「調律」は生成された疑似乱数のワードのうち数ビットだけを取り出したときの高次元超立方体への均等分布を改良して理論値に近づけるための工夫である（メルセンヌ・ツイスタは「調律」がなくても623次元超立方体に均等分布する）。ここまでは先行するTT800と同様であるが、メルセンヌ・ツイスタでは、状態空間が長方形から1ビットだけ突き出した（あるいは31ビット欠けた）形をしている点に特徴がある。これは19937÷32が623余り1であることによる。このような状態空間をとることによって219937-1という周期を実現している。
短所.
多くのアプリケーションにとって、メルセンヌ・ツイスタは優れた疑似乱数生成法である。しかしながら、実際にプログラムで利用するにあたっては、いくつか留意すべき点がある。
なお、上記の欠点のうち、内部ベクトルの大きさや零超過状態からの回復速度の問題は、SIMD-oriented Fast Mersenne Twister (SFMT) で改善されている。
各種プログラミング言語におけるライブラリ.
一部のプログラミング言語では、デフォルトの擬似乱数列生成器としてメルセンヌ・ツイスタが標準ライブラリに取り入れられている。そのような言語の例として、
Python,
Ruby,
R,
PHP,
MATLAB,
C++（C++11から）
がある。
その他のプログラミング言語におけるライブラリの例として、以下が挙げられる：
余談.
開発当初は Primitive Twisted Generalized Feedback Shift Register Sequence という名前であったが、ドナルド・クヌースに「名前が長すぎる」と言われたため、現在の名前に変更した。
Mersenne Twister の略称 MT には、開発者の名前「まこと」と「たくじ」のイニシャルという意味もこめられている。 の動画の質疑応答部分を参照。