【发布时间】:2020-11-03 11:45:03
【问题描述】:
使用 MATLAB 并尝试使用计算机集群执行 100 次重复具有固有随机性的某些计算。这些重复中的每一个都应包含相同的代码,但具有不同的随机种子。 看来
rng('shuffle')
recommended by documentation 如果所有作业同时开始运行(在不同的机器上),则可能无法实现这一点,因为使用的种子是一个似乎是从时间初始化的整数(它单调增加,似乎精度为 100 分之一)一秒钟。
精度似乎合理,但如果同时运行 100-1000 个实例,“冲突”仍然很可能发生,从而破坏了独立的结果统计解释。
有什么方法可以避免这种冲突,而无需手动为每个实例提供一个用作种子的“实例 ID”?
【问题讨论】:
-
不要从时间开始播种。为每台机器分配一个唯一编号,并使用(时间+编号)为每台机器的 RNG 播种。将数字分散开,相距足够远,不太可能赶上下一个数字。
-
我同意,但如何用 Matlab 实际做到这一点?它如何访问这样的每台机器唯一编号?
-
阅读我的答案...序列号或处理器ID
标签: matlab random cluster-computing random-seed