Netlogo 创建后奇怪的随机种子行为-<;品种>-具有

Netlogo 创建后奇怪的随机种子行为-<;品种>-具有,netlogo,Netlogo,我在模型中遇到了一些奇怪的随机种子行为 以下程序: 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 生成如下所示的

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

以下程序:

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
显然,当繁殖链接被创建时会发生一些事情,但我真的不确定它是什么。为完整性起见,请注意Node2节点链接是无向的,并声明为:

undirected-link-breed [node2node-links node2node-link]
令人费解的是,尽管对random 100的第三次调用显然是不可复制的,但它看起来也可能不是伪随机的

我对此进行了进一步的研究,很明显发生了一些奇怪的事情——这里是我实际运行时代码中的另一个示例。在这种情况下,链接是在第5次调用random 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 
我创建了一个只包含节点和节点2节点品种/链接品种的空白模型,这个过程和行为不会发生-相反,对random 100的所有调用都是可复制的

我很费劲地把我所有的模型代码都包括进去,因为它相当长,毫无疑问会造成信息过载——而且,通过调用clear all,我认为我可以排除对程序其他部分的依赖性

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

评论摘要:

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


我想知道,在实际代码中,ask nodes[create-node2node-links-与radius(1000)中的其他节点链接]行
是否每次都有不同的操作数。代码提取不包含节点创建,并且每次运行程序时可能会创建一组不同的节点(位于不同位置)。这意味着连接半径内的节点数量每次都不同。如果在创建节点之前设置了随机种子,您仍然会遇到问题吗?我已经考虑过这一点,但我是在设置种子之后创建节点的(请参见第9行:创建节点10)。现在这是一个真正的灾难-我猜它最终将是一个非常简单的东西,但很容易被忽视,正如你所说的。感谢您的关注。另外,在我的原始代码中,我在清除全部后直接在设置函数中设置种子。每次我在其他空白模型中运行您的代码时,我都会得到
78,78,76
。你有什么小部件?我想知道其中一个(可能是监视器)背后的代码是否在推进RNG。监视器会偶尔更新,所以其中一个监视器可能会有定时问题。这可能被认为是一个bug(监视器和绘图应该使用辅助RNG)。我想我已经隔离了这个问题。。。我有一个显示环境中图形数量的监视器(我一直希望是1)-它运行以下代码:
length nw:weak component clusters
一旦我删除此监视器,运行将变得可复制。我将需要做一些更多的测试,但这似乎解决了问题。我不确定这是一个bug还是不是我应该在显示器上运行的东西。无论如何,非常感谢Bryan。请查看我的评论,即使使用nw:distance to,这个问题仍然存在于NetLogo 5.2中