如果我在NetLogo中保存一个状态,然后重复加载它,每次加载后的随机数序列是否相同?
那么,如果在状态加载后执行“询问海龟”,那么每次都会以完全相同的顺序询问海龟吗?在剩下的整个跑步过程中,无论多长时间?每个询问命令和其他生成随机数的命令都相同吗?快速测试让我认为是,但有人确定吗?
这与使用中间知识和代理模型有关(https://arxiv.org/pdf/2409.17196)
代理集没有任何特定的顺序。事实上,它始终处于一个 随机顺序。每次你使用它时,代理集都在 不同的随机顺序。
所以不,你的海龟不会每次都以完全相同的顺序被问到。 如果您希望每次致电代理时都有相同的代理顺序,则需要一种解决方法。之前已经在这里问过这个问题:问海龟 - 代理集的排序。您还可以查看模型库中的AskOrderingExample。
如果您不是在每个
ask
实例上引用完全相同的代理顺序,而是在每次执行模拟时引用相同的随机顺序序列,那么您必须设置随机种子。因为
如果您自己没有设置随机种子,NetLogo 会将其设置为一个值 基于当前日期和时间。
(参见 NetLogo 编程指南:随机数
如果您在模拟设置中修复了随机种子(请参阅 NetLogo 词典中的
random-seed
)。这样您将始终拥有相同的随机数序列。因此,所有模拟都是相同的。查看模型库中的RandomSeedExample。
如果您只想使代码的某些部分具有相同的随机顺序,您可能需要使用
with-local-randomness
的解决方法。