<random>

公有成员函数
<random>

std::discard_block_engine::operator()

result_type operator()();
生成随机数
Returns a new random number. (返回一个新的随机数。)

引擎的转换算法内部计数器加一。如果此操作使内部计数器超过了已用块 (used_block)参数(第三个类模板参数,r),则调用其 基类 引擎的discard (丢弃),并将块大小 (block_size) 与其块大小 (block_size)和其已用块 (used_block)作为参数,并重置内部计数器

生成算法简单地调用其 基类 引擎的operator() (调用运算符)并返回其值。

总而言之,此函数产生的效果与在 discard_block_engine 中定义如下的效果相同:
1
2
3
4
5
6
result_type operator() {
  // assuming n is the internal counter, and e the base engine object:
  if (n>=used_block) {e.discard(block_size-used_block); n=0;}
  ++n;
  return e();
}

注意:未完全测试,请报告不准确之处。

参数



返回值

A new random number. (一个新的随机数。)
result_type (结果类型)是一个成员类型,定义为 基类 引擎生成的数字类型的别名。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// discard_block_engine::operator()
#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();

  // ranlux24 is a standard instantitation of discard_block_engine:
  std::ranlux24 generator (seed);
  std::cout << "Random value: " << generator() << std::endl;

  return 0;
}

可能的输出
Random value: 11370824


复杂度

base 引擎决定。

另见