2010-06-03 24 views
2

目前我正在搭建一條卡車路線,以驅動我的netlogo-地。 當卡車靠近應該提供的商店補丁時,卡車需要改變其行爲。我的ifelse語句的結果取決於true/false的操作嗎?

但是,我的ififelse聲明似乎沒有反應良好,答案取決於輸出。隨着一些測試:

*turtles> ifelse ((patch (first dirx) (first diry)) = one-of neighbors4) [write "11"] [write "22"] 
"11"* 

*turtles> ifelse ((patch (first dirx) (first diry)) = one-of neighbors4) [write "111"] [write "122"] 
"122"* 

*turtles> ifelse (patch (first dirx) (first diry)) = one-of neighbors4 [write "111"] [write "122"] 
"122"* 

*turtles> ifelse (patch (first dirx) (first diry)) = one-of neighbors4 [write "11"] [write "12"] 
"12"* 

*turtles> ifelse (patch (first dirx) (first diry)) = one-of neighbors4 [write "11"] [write "22"] 
"11"* 

請注意,在這段時間我不動我的車,我使用指揮中心問這些問題(從龜卡車的角度)。

我對此很困惑。因爲我唯一改變的是行動(寫什麼)。這不應該影響真/假陳述本身。

有沒有人有任何線索這裏發生了什麼,爲什麼ifelse迴應奇怪?

回答

2

這是因爲one-of隨機選擇其參數之一併返回該參數。

neighbors4返回一個包含4個補丁(包括龜的補丁的N,S,E和W)的代理集。因此,one-of neighbors4將從這4箇中隨機選擇,因此每次調用它時可能會返回不同的值。