1、如果在新会话中查看、或的输出,可注意到,每次重新启动时,这些函数都返回相同的数字序列。能够将随机数生成器重置到启动状态而实际上并不重新启动,通常很有用。例如,您可能需要重复进行涉及随机数的计算并获取相同结果。提供了一种非常简单的方式来将随机数生成器重置为其默认设置。
2、启动时使用的或为您提供的“默认”随机数设置是什么。如果调用不带任何输入的,可以看到,该设置是种子为0的梅森旋转生成器算法。下面详细介绍了如何使用上述输出,包括字段,来控制和更改生成随机数的方式。在上文中,该示例提供了一种方法来查看生成器、和当前使用的设置。
3、每次调用、或时,它们都会从其共享的随机数生成器获取一个新值,后续值可被视为在统计上独立的值。但是如上所述,每次重新启动时,这些函数都将会被重置并返回相同的数字序列。很明显,使用“随机”数进行的计算不能认为是与统计无关的。因此,如果需要合并在两个或更多个会话中完成的计算,好像这些计算与统计无关的,则无法使用默认生成器设置。
4、避免在新的会话中重复生成相同随机数的一种简单方式是,为随机数生成器选择不同的种子。通过基于当前时间创建种子,为您提供了一种选择不同种子的简单方式。
5、每次使用时,都将为生成器提供一个不同的种子。可以调用不带任何输入的来查看实际所使用的种子。是为随机数生成器重新提供种子的一种简单方式。您可能认为,使用它在中实现“真正的”随机性是个好主意,甚至是必要的。
1、但在大多数场合下,基于当前时间选择种子并不会改善从、和获取的值的统计属性,也不会在任何意义上提高这些值的随机性。虽然最好在每次启动时,或者在运行某种涉及随机数的大型计算之前,都为生成器重新提供种子,但实际上在会话中过于频繁地为生成器重新提供种子并不是一种恰当之举,因为这可能会影响随机数的统计学属性。真正提供的是一种避免重复相同值序列的方法。
2、有时它很关键,有时仅是“不错”,但通常完全无非紧要。请记住,如果使用,您可能需要保存创建的种子,以便在以后重复您的计算。下面说明了如何执行该操作。到此为止,您已了解了如何将随机数生成器重置为其默认设置,以及使用基于当前时间创建的种子为其重新提供种子。
3、还提供了一种使用特定种子来为随机数生成器重新提供种子的方法。您可以多次使用相同的种子来重复进行相同的计算。例如,如果运行下面的代码两次。
4、将得到完全一样的结果。通过执行该操作可以在清除之后重新创建它,以便在依赖于的后续计算中使用这些特定值来重复所要执行的操作。
5、另一方面,您可能想要选择其他种子来确保不重复相同的计算。例如,如果在某会话中运行下面的代码。