【问题标题】:Usage of Memento in pseudorandom number generatorMemento 在伪随机数生成器中的使用
【发布时间】:2014-03-02 15:00:34
【问题描述】:

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

【问题讨论】:

    标签: design-patterns random memento


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2017-08-22
      • 2014-05-18
      • 1970-01-01
      • 2015-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-02
      • 1970-01-01
      相关资源
      最近更新 更多