N3551 Random Number Generation in C++11
特定の範囲の値がほしい場合、剰余を使用してはいけません。
// サイコロを振る int roll_a_biased_die( ) { static std::default_random_engine e{}; return 1 + e() % 6; // これはだめ }
ここでは剰余を使用して、1 + (0から5)の値が等確率で出力されることを期待していますが、剰余を使用した場合、小さい値が出力される確率が高くなるため、等確率にはなりません。
なので、uniform_int_distributionのような、専用の分布クラスを使用しましょう。