类别:仿函数 | 组件类型:类型 |
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
参数 | 描述 | 默认值 |
---|---|---|
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 | 见下文。 |
这些成员没有在可适配一元函数要求中定义,但特定于 | 描述 |
---|---|
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成员。