所以,每次我开发一些大的东西时,多个模块组合在一起构建最终功能时,我一直在想同一个问题:如果超过 1 个模块需要使用随机函数,在哪里初始化随机种子?
如果我有某个需要随机的类(例如,通过使用自我实现的快速排序对输入数组进行排序来初始化自身的类,所以我需要一个随机的枢轴选择),我通常有一个私有static bool isRandOn;
变量,所以在我开始之前随机枢轴选择,我检查该变量并srand(time(NULL));
在随机尚未打开时执行。
如果我在命名空间中有大量实用程序函数,我会做类似的事情:我将这样一个变量放在我的 utils 库中的匿名命名空间中,并与类做或多或少相同的事情。
我遇到的问题是在组合这些模块时。就其本身而言,我知道每个模块不会多次设置种子。但是,我希望能够一起使用不同数量的模块,我希望其他人能够独立于其他人使用我的一个或多个模块......
那么,处理多个需要随机种子的模块的最佳方法是什么?在每个模块中设置种子?根本不设置种子,而是记录随机的用法并让用户在他想使用模块时初始化种子?第三点?