[C++11] random のメモ

参考: random (C++11) – cpprefjp

お手軽に使うにはパラメータ定義済み擬似乱数生成器を使う。
基本的には std::mt19937 か std::mt19937_64 使っておけばOK
std::default_random_engine でもいいけどどんな乱数生成器が使われるかはコンパイラにより異なる。

std::random_device seedgen;
std::mt19937 engine(seedgen()); // seedgenで乱数を初期化
std::uint_fast32_t random = engine(); // 乱数を取得
std::cout << "random: " << random << std::endl;

//
// 1 ~ 100 の間の整数値をランダムに取得
//
std::uniform_int_distribution<> intDist(1, 100);
puts("\n std::uniform_int_distribution test:");
for (int i = 0; i < 100; i++)
{
  int integer = intDist(engine);
  assert(1 <= integer && integer <= 100);
  printf("%d ", integer);
}

//
// 1 ~ 100 の間の実数をランダムに取得
//
std::uniform_real_distribution<> realDist(1, 100);
puts("\n std::uniform_real_distribution test:");
for (int i = 0; i < 100; i++)
{
  double real = realDist(engine);
  assert(1.0 <= real && real <= 100);
  printf("%.3f ", real);
}

// その他 distrubition(分布) の種類がいろいろ有るので
// 用途に合わせて利用するらしい

  1. コメントはまだありません。

  1. トラックバックはまだありません。

*


Advertisement