我想要x%的海龟,称为pholders,将他们的选择从良好的1改为2。 代码如下:
ask pholders [ifelse random-float 1 <= probkauf
[ask (n-of (count pholders with [choice-num = 1] * 0.01) pholders with[choice-num = 1]) [set choice-num 2]]
[ifelse random-float 1 < 0.5[imitation set typeofchoice 1][beratung set typeofchoice 4]]
]
最初,100%的pholders选择了良好的1.问题如下:当我将pholders的数量增加到102到108之间的某个时间时,不再计算1%的分数,它计算10% 。 pholders数量越高,分数越大:对于200个pholders,代码计算为60%。当我将pholders的数量保持恒定且低于108但将百分比从0.01更改为0.02时,它会计算出55%或58%的值。这个问题可能来自于询问环境中的问题吗?
非常感谢你。
答案 0 :(得分:1)
您的问题是您多次运行概率代码。您的代码具有以下结构:
ask pholders
[ ifelse random-float 1 <= probkauf
[ ask (n-of (count pholders with [choice-num = 1] * 0.01) pholders with [choice-num = 1])
[ set choice-num 2]
]
[ <do something else> ]
]
如果你有500个pholders,那么一个pholder会选择一个随机数500次,如果这个数字低于你的值probkauf,它会指示一些选择数为1的pholders将它改为choice-num 2. 500%1%转换的潜在场合是你有这么多被转换的原因。
根据评论中的描述,我认为你想要这个:
globals [probkauf]
turtles-own [choice-num]
to setup
clear-all
set probkauf 0.5
create-turtles 1000
[ setxy random-xcor random-ycor
set color blue
set choice-num 1
]
reset-ticks
end
to go
update-choices
tick
end
to update-choices
ifelse random-float 1 < probkauf
[ ask turtles with [choice-num = 1]
[ if random-float 1 < 0.01
[ set choice-num 2
set color red
]
]
]
[ ; whatever happens with other part of probability
]
end