乱数について勉強する機会がありそこでメルセンヌ・ツイスタを知りました。
こちらは覚えておいて損はないと思いましたので、忘却録としてまとめていこうと思います。
目次
メルセンヌ・ツイスタとは
こちらを使用するメリットとしてはランダムの周期が長いということになります。
ランダムの周期が短いと、同じパターンが繰り返されることになる為、似たような値が繰り返し算出されてしまいますが
メルセンヌ・ツイスタをしようすることでそちらが解消できます。
C++サンプル
実際にメルセンヌ・ツイスタを使用したサンプルになります。
// メルセンヌ・ツイスタを使用するために必要なヘッダ
#include <random>
// メルセンヌ・ツイスタのテスト
// 0から99までの値をランダムで生成
void MersenneTwisterTest()
{
// メルセンヌ・ツイスタ乱数のインスタンスを生成します。
std::mt19937 mt;
// 乱数のシード値を設定します。(最終的にはTick時間を設定するのがいいかと思います)
mt.seed(100);
// 範囲指定用の乱数生成関数を作成します。
std::uniform_int_distribution<> rand100(0, 99);
// 乱数の表示
for (int i = 0; i < 20; ++i) {
std::cout << rand100(mt) << "\n";
}
}