乱数生成したい(TRandomMixMax)
1#include <TRandomMixMax.h>
2
3// 乱数生成器を初期化
4TRandomMixMax rng;
5
6// 0から1の一様乱数を生成
7double randomValue = rng.Uniform(0, 1);
TRandomMixMaxは、ROOTが提供する乱数生成器のひとつです。
高品質な乱数を生成するためのアルゴリズムを採用しています。
注釈
これまではTRandom3を使うことが一般的でしたが、
最近はTRandomMixMaxが推奨されているようです。
シードしたい
1TRandomMixMax rng(42);
乱数生成器を初期化する際にシード値を指定できます。 同じシード値を使用すると、同じ乱数列が生成されます。
精密な乱数生成したい(TRandomRanluxpp)
1#include <TRandomRanluxpp.h>
2// 精密な乱数生成器を初期化
3TRandomRanluxpp rng;
TRandomRanluxppは、より高精度な乱数生成器です。
とくに科学的なシミュレーションに適しています。
C++11で乱数生成したい(std::mt19937)
1#include <random>
2
3// 乱数生成器を初期化
4std::mt19937 rng(42);
5// 0から1の一様乱数を生成
6double randomValue = std::uniform_real_distribution<double>(0, 1)(rng);
std::mt19937は、C++11で導入された乱数生成器です。
Mersenne Twisterアルゴリズムを使用しており、高速で高品質な乱数を生成します。
ROOTの乱数生成器と組み合わせて使用できます。