随机数序列是否受 NetLogo 中的负载状态影响?

问题描述 投票:0回答:1

如果我在NetLogo中保存一个状态,然后重复加载它,每次加载后的随机数序列是否相同?

那么,如果在状态加载后执行“询问海龟”,那么每次都会以完全相同的顺序询问海龟吗?在剩下的整个跑步过程中,无论多长时间?每个询问命令和其他生成随机数的命令都相同吗?快速测试让我认为是,但有人确定吗?

这与使用中间知识和代理模型有关(https://arxiv.org/pdf/2409.17196

netlogo
1个回答
0
投票

来自 NetLogo 编程指南:Agentsets

代理集没有任何特定的顺序。事实上,它始终处于一个 随机顺序。每次你使用它时,代理集都在 不同的随机顺序。

所以不,你的海龟不会每次都以完全相同的顺序被问到。 如果您希望每次致电代理时都有相同的代理顺序,则需要一种解决方法。之前已经在这里问过这个问题:问海龟 - 代理集的排序。您还可以查看模型库中的AskOrderingExample

如果您不是在每个

ask
实例上引用完全相同的代理顺序,而是在每次执行模拟时引用相同的随机顺序序列,那么您必须设置随机种子。因为

如果您自己没有设置随机种子,NetLogo 会将其设置为一个值 基于当前日期和时间。

(参见 NetLogo 编程指南:随机数

如果您在模拟设置中修复了随机种子(请参阅 NetLogo 词典中的

random-seed
)。这样您将始终拥有相同的随机数序列。因此,所有模拟都是相同的。查看模型库中的RandomSeedExample

如果您只想使代码的某些部分具有相同的随机顺序,您可能需要使用

with-local-randomness
的解决方法。

© www.soinside.com 2019 - 2024. All rights reserved.