SGI

subtractive_rng

类别:仿函数 组件类型:类型

描述

Subtractive_rng是一个基于减法方法的随机数生成器 [1]。它是一个一元函数:它接受一个参数N,一个无符号整数,并返回一个无符号整数小于N的无符号整数。对同一个subtractive_rng对象[2]的连续调用会产生一个伪随机序列。

示例

int main()
{
  subtractive_rng R;
  for (int i = 0; i < 20; ++i)
    cout << R(5) << ' ';
  cout << endl;
}
// The output is   3 2 3 2 4 3 1 1 2 2 0 3 4 4 4 4 2 1 0 0 

定义

定义在标准头文件functional中,以及非标准向后兼容头文件function.h中。此函数对象是 SGI 扩展;它不是 C++ 标准的一部分。

模板参数

无。

模型

随机数生成器可适配一元函数

类型要求

无。

公有基类

unary_function<unsigned int, unsigned int>

成员

参数 描述 默认值
argument_type 可适配一元函数 一个subtractive_rng的参数类型无符号整数.
result_type 可适配一元函数 结果的类型无符号整数.
subtractive_rng(unsigned int seed) subtractive_rng 见下文。
subtractive_rng() subtractive_rng 见下文。
unsigned int operator()(unsigned int N) 可适配一元函数 函数调用。返回范围在[0, N).
内的伪随机数。 subtractive_rng 见下文。

void initialize(unsigned int seed)

新成员subtractive_rng.
这些成员没有在可适配一元函数要求中定义,但特定于 描述
subtractive_rng(unsigned int seed) 成员subtractive_rng构造函数。创建一个seed.
subtractive_rng() 默认构造函数。创建一个subtractive_rng使用默认值初始化。
内的伪随机数。 重新初始化subtractive_rng的内部状态,使用值seed.

注释

[1] 请参阅 Knuth 的第 3.6 节,了解 FORTRAN 中减法方法的实现。Knuth 的第 3.2.2 节分析了此类算法。(D. E. Knuth,《计算机程序设计艺术。第 2 卷:半数值算法》,第二版。Addison-Wesley,1981。)

[2] 请注意,由subtractive_rng产生的序列是完全确定性的,并且由两个不同的subtractive_rng对象产生的序列彼此独立。也就是说:如果R1是一个subtractive_rng,则当R1被调用时返回的值仅取决于R1的种子以及R1被调用的次数。对其他subtractive_rng对象的调用是不相关的。在实现方面,这是因为该类subtractive_rng不包含static成员。

另请参阅

随机数生成器
[Silicon Surf] [STL Home]
版权所有 © 1999 Silicon Graphics, Inc. 保留所有权利。 商标信息