我想问一下,伪随机数生成器中究竟是如何使用memento的?我对伪随机数生成器有很高的了解,但我没有看到任何纪念品(即使我在那里阅读)。非常感谢你的回答:)
答案 0 :(得分:0)
我相信你在谈论设计模式纪念品。如果是这样,那么在我看来,memento被用作随机数生成器的内部状态。首先,您使用特定种子(即其状态)创建随机数生成器,然后在下一个随机数生成期间使用此种子。所以使用标准的纪念品术语:
C ++中的标准rand()不支持检索其状态,因此唯一的恢复操作只是在开始时通过srand()存储您设置的种子,然后使用它将生成器恢复到初始状态。
但是,您可以重新实现它,以便它支持状态查询,然后恢复到任何(不仅是初始状态)状态。关于如何实现这一点,请参阅this SO answer。此外,在同一个线程中也提到了新的c ++ 11随机数生成器默认提供此功能。