create-<breeds>-with 后奇怪的随机种子行为

Strange random-seed behaviour after create-<breeds>-with

我在我的模型中遇到了一些奇怪的随机种子行为。

以下程序:

to testRNG
  clear-all

  random-seed 10

  type random 100
  type ","

  create-nodes 10

  type random 100
  type ","

  ask nodes[ create-node2node-links-with other nodes in-radius (1000)]

  print random 100
end

生成如下所示的输出:

observer> testRNG
78,78,42
observer> testRNG
78,78,42
observer> testRNG
78,78,40
observer> testRNG
78,78,42
observer> testRNG
78,78,71
observer> testRNG
78,78,52
observer> testRNG
78,78,71
observer> testRNG
78,78,40
observer> testRNG
78,78,97
observer> testRNG
78,78,52
observer> testRNG
78,78,97
observer> testRNG
78,78,52
observer> testRNG
78,78,18
observer> testRNG
78,78,19
observer> testRNG
78,78,27
observer> testRNG
78,78,34
observer> testRNG
78,78,58
observer> testRNG
78,78,52
observer> testRNG
78,78,40

显然创建繁殖链接时发生了一些事情,但我真的不确定它是什么。为了完整起见,请注意 node2node-links 是无向的并声明为:

undirected-link-breed [node2node-links node2node-link]

令人费解的是,虽然第三次调用随机 100 显然不可重现,但它看起来也可能不是伪随机的。

我对此进行了更深入的调查,显然发生了一些奇怪的事情 - 这是我实际运行时代码中的另一个示例。在这种情况下,链接是在第 5 次调用随机 100 之后创建的,后续调用不可重现 - 但是我不得不认为 RNG 在 19 次中有 7 次生成“34, 1, 1”的几率非常小。

START 66 , 62 , 61 , 21 , 62 , 10 , 67 , 2 END
START 66 , 62 , 61 , 21 , 62 , 34 , 1 , 1 END
START 66 , 62 , 61 , 21 , 62 , 34 , 1 , 60 END
START 66 , 62 , 61 , 21 , 62 , 29 , 32 , 41 END
START 66 , 62 , 61 , 21 , 62 , 16 , 71 , 78 END
START 66 , 62 , 61 , 21 , 62 , 10 , 67 , 2 END
START 66 , 62 , 61 , 21 , 62 , 34 , 1 , 1 END
START 66 , 62 , 61 , 21 , 62 , 34 , 1 , 1 END
START 66 , 62 , 61 , 21 , 62 , 34 , 1 , 1 END
START 66 , 62 , 61 , 21 , 62 , 34 , 1 , 1 END
START 66 , 62 , 61 , 21 , 62 , 29 , 32 , 41 END
START 66 , 62 , 61 , 21 , 62 , 81 , 26 , 63 END
START 66 , 62 , 61 , 21 , 62 , 92 , 11 , 93 END
START 66 , 62 , 61 , 21 , 62 , 88 , 93 , 60 END
START 66 , 62 , 61 , 21 , 62 , 34 , 1 , 1 END
START 66 , 62 , 61 , 21 , 62 , 34 , 1 , 1 END
START 66 , 62 , 61 , 21 , 62 , 34 , 93 , 60 END
START 66 , 62 , 61 , 21 , 62 , 88 , 93 , 60 END
START 66 , 62 , 61 , 21 , 62 , 94 , 11 , 38 END 

我创建了一个只有节点和 node2node breeds/link-breeds 的空白模型,并且这个单一过程和行为不会发生 - 相反,对随机 100 的所有调用都是可重现的。

我很难包含我所有的模型代码,因为它相当长并且无疑会是信息过载 - 此外,通过调用 clear-all 我认为我可以排除对程序其他部分的依赖。

如果有人对这里可能发生的事情有任何想法,或者可以突出显示我忽略的简单内容,我们将不胜感激。

评论总结:

这是由于 NW 扩展中的一个错误,其中监视器中的 运行ning nw:weak-component-clusters 偶尔会推进主随机数生成器。监视器和绘图旨在使用它们自己的 RNG,因此您在监视器或绘图中 运行 的任何代码都不应影响其他代码的结果。

https://github.com/NetLogo/NW-Extension/issues/144