公共成员函数
<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.

另见