公共成員函式
<random>

std::mersenne_twister_engine::discard

void discard (unsigned long long z);
推進內部狀態
將內部狀態推進z個刻度,就像呼叫了operator()z次一樣,但在此過程中不生成任何數字。

對狀態序列的影響與過渡演算法應用與在後續元素上推進的刻度一樣多次相同。物件使用的過渡演算法會在選定的元素上產生扭曲,就好像這是x[i]在以下程式碼段中

1
2
3
UIntType Mask = (1u<<w)-1, UMask= (Mask << r) & Mask, LMask = (~UMask) & Mask,
Y = (x[i]&UMask)|(x[(i+1)%n]&LMask);  // upper bits of x[i] and lower of x[i+1]
x[i]=x[(i+m)%n]^(Y>>1)^((Y&1)*a);     // mersenne twister linear transformation 
每個值都是它們對應的類模板引數。

注意:尚未完全測試,請報告任何不準確之處。

引數

z
等效推進的數量。

返回值



示例

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

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

  std::mt19937 generator (seed);  // mt19937 is a standard mersenne_twister_engine

  std::cout << "Random value: " << generator() << std::endl;

  generator.discard(generator.state_size);  // twist the entire state sequence

  std::cout << "Random value: " << generator() << std::endl;

  return 0;
}

可能的輸出
Random value: 2025681734
Random value: 649145785


複雜度

z呈線性關係。

另見