我有一个变量:
ask group [set means-one groupmeans + resources-agent ]
我想让netlogo将变量限制在1到99之间。 怎么样?
答案 0 :(得分:2)
你的问题并不完全清楚。 “改变范围”是什么意思?如果你想剪切极值,你可以这样做:
to-report clip [#x #min #max]
if (#x < #min) [report #min]
if (#x > #max) [report #max]
report #x
end
然后你可以ask turtles [set means-one clip means-one 1 99]
。 Otoh,如果您确实想要将所有现有值线性地重新调整到新范围,您可以执行以下操作:
to rescale-all-means-one
let _newmin 1
let _newmax 99
let _newrange (_newmax - _newmin)
let _lst [means-one] of turtles
let _min min _lst
let _max max _lst
let _range (_max - _min)
ask turtles [
let _scale (means-one - _min) / _range
let _scaled (_newmin + _scale * _newrange)
set means-one _scaled
]
end
答案 1 :(得分:2)
只是为了简化Alan的第一个删除if语句的答案:
你可以这样做:
ask group [set means-one (max (list 1 (min (list 99 groupmeans + resources-agent))) ]