Netlogo-函数应该是随机的,但不是随机的

Netlogo-函数应该是随机的,但不是随机的,netlogo,Netlogo,我有一个模拟,在一些情况下,一个最终应该通过所有可能的组合的函数是不存在的。所以我开始设置随机种子值,直到我可以复制它。。。果不其然,函数从未返回它最终应该返回的某些值 这就是函数,我在这里使用的是什么导致随机部分断裂的东西吗我只是不明白是什么导致我的代码失败,它让我沮丧不已 to-report topk-newRandom [active-turtle k] ;returns a random list of turtles ;put the agent-set of turtles in

我有一个模拟,在一些情况下,一个最终应该通过所有可能的组合的函数是不存在的。所以我开始设置随机种子值,直到我可以复制它。。。果不其然,函数从未返回它最终应该返回的某些值

这就是函数,我在这里使用的是什么导致随机部分断裂的东西吗我只是不明白是什么导致我的代码失败,它让我沮丧不已

to-report topk-newRandom [active-turtle k] ;returns a random list of turtles
  ;put the agent-set of turtles in a list of random order
  let topk sort n-of (count turtles with [document?]) turtles with [document?]

  ;remove turtles that are already connected to the active-turtle
  foreach topk [if (member? ? link-neighbors) [set topk remove ? topk]]

  ;limit the size of the list to being <= k
  if (length topk > k) [set topk sublist topk 0 k]
  report topk
end
报告topk newRandom[活动海龟k];返回海龟的随机列表
;将海龟的代理集按随机顺序排列
让topk排序n-of(使用[document?]计算海龟数)使用[document?]计算海龟数
;移除已连接到活动turtle的turtle
foreach topk[if(成员??链接邻居)[设置topk移除?topk]]
;将列表大小限制为k)[设置topk子列表topk 0 k]
报告topk
结束

问题出在第一行:
让topk排序n-of(用[document?]计数海龟)用[document?]计数海龟

它应该以随机顺序返回一个代理列表,但是看起来它实现了完全相反的效果,将代理集转换为列表的排序也去掉了随机顺序(“排序”真的应该是一个巨大的红旗)

我查了一下如何获得一个随机排序的代理列表,发现了这样一个:
[self]海龟的列表

将其应用到我的代码中解决了这个问题。它看起来也更好

to-report topk-newRandom [active-turtle k]
  let topk [self] of turtles with [document?]
  foreach topk [if (member? ? link-neighbors) [set topk remove ? topk]]
  if (length topk > k) [set topk sublist topk 0 k]
  report topk
end

我开始怀疑第一行代码。。。我看得越多,就越不确定自己写这篇文章时知道自己在做什么。我正在调查