公共成員函式
<random>

std::mersenne_twister_engine::(建構函式)

(1)
explicit mersenne_twister_engine ( result_type val = default_seed );
(2)
template <class Sseq>explicit mersenne_twister_engine ( Sseq& q );
構造梅森旋轉引擎
構造一個 mersenne_twister_engine 物件,並將其內部狀態序列初始化為偽隨機值。

內部狀態序列透過線上性隨機生成器上應用單個值 (val) 或使用 種子序列 物件 (q) 來播種。

引數

val
一個種子值。 整個狀態序列由此值使用線性隨機生成器生成。
result_type是一個成員型別,定義為第一個類模板引數的別名 (UIntType).
default_seed是一個成員常量,定義為5489u.
q
一個種子序列物件,例如seed_seq型別的物件。
Sseq應為具有generate成員函式的種子序列類。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// mersenne_twister_engine constructor
#include <iostream>
#include <chrono>
#include <random>

int main ()
{
  // obtain a seed from the system clock:
  unsigned seed1 = std::chrono::system_clock::now().time_since_epoch().count();

  // obtain a seed from the user:
  std::string str;
  std::cout << "Please, enter a seed: ";
  std::getline(std::cin,str);
  std::seed_seq seed2 (str.begin(),str.end());

  std::mt19937 g1 (seed1);  // mt19937 is a standard mersenne_twister_engine
  std::cout << "A time seed produced: " << g1() << std::endl;

  std::mt19937 g2 (seed2);
  std::cout << "Your seed produced: " << g2() << std::endl;

  return 0;
}

可能的輸出
Please, enter a seed: Matsumoto and Nishimura
A time seed produced: 749725171
Your seed produced: 4255278487


複雜度

線性於state_size.

另見