1

请问,伪随机数生成器中memento到底是怎么用的?我对伪随机数生成器有很高的了解,但我没有看到任何纪念品(即使我读过它也在那里)。非常感谢您的回答:)

4

1 回答 1

0

我相信你在谈论设计模式纪念品。如果是这样,那么我认为 memento 被用作随机数生成器的内部状态。首先,您创建具有特定种子(即其状态)的随机数生成器,然后在下一次随机数生成期间使用此种子。所以使用标准的纪念品术语:

  • originator 是随机数生成器,
  • caretaker 是使用随机数生成器检索数字的调用者,
  • memento 是随机数生成器的状态,基于它创建下一个随机值

C++ 中的标准 rand() 不支持检索其状态,因此唯一的恢复操作只是在开始时存储您通过 srand() 设置的种子,然后使用它将生成器恢复到初始状态。

但是,您可以重新实现它,使其支持状态查询,然后恢复到任何状态,而不仅仅是初始状态。有关如何实现这一点的方法,请参见这个 SO answer。在同一个线程中还提到,新的 c++11 随机数生成器默认提供此功能。

于 2014-07-22T08:03:35.483 回答