从文档:
不要将循环中的Randomize调用与对Random函数的调用组合在一起.通常,在所有对Random的调用之前,Randomize只调用一次.
(突出显示'我只有一次')
最佳实践问题:
如果Delphi库使用Random
,它是否应该只记录初始化调用的要求Randomize
,并将Randomize的调用留给库的用户?
或者库应该如何处理初始化,例如
if System.RandSeed = 0 then Randomize;
Run Code Online (Sandbox Code Playgroud)
在我看来,这完全取决于你的图书馆的结构和目的.
如果用户永远不会看到随机调用,那么我建议让库始终初始化它.将它放在文档中是没有必要的.
另一方面,如果用户实际上通过使用你的库(我猜你的库是如何工作的)直接调用Random或它的一些包装器,那么用户将(应该)意识到他正在使用某种随机 - 生成需要初始化的函数,因为大多数语言中的随机序列实际上是基于种子的伪随机序列.
可能是用户需要多次初始化随机序列,或者他/她可能只对初始化它一次感到高兴.这完全取决于用户的需求.
我不会强迫它,而是让Randomize调用对用户可用,并且可能让用户告诉库要么处理初始化还是留给他/她.在这种情况下,所有都应记录在案.
HTH