答案 0 :(得分:1)
如果不进一步限制问题,计算将变得昂贵。假设您有assign-probabilities
记者:
to form-links ;;turtle proc
let %others [self] of other turtles ;;list of other turltes
let %p assign-probabilities %others
let %idx random-index %p
create-link-with item %idx %others
end
to-report random-index [#p] ;;input probability dist as list
let %draw random-float 1
let %cum-p item 0 #p
let %ct 0
while [%draw > %cum-p] [
set %ct (%ct + 1)
set %cum-p (%cum-p + item %ct #p)
]
report %ct
end
以下是一些有助于降低计算成本的事情。如果没有创建或死亡的海龟,您可以在安装过程中仅计算一次其他海龟(并设置为海龟属性)。如果概率不随时间变化,则可以对概率执行相同的操作。在后一种情况下,您可能希望计算累积概率(一次),并使用二分算法生成随机索引。