如何为将在模型中更改的<breed>创建随机分布的布尔变量?

时间:2018-11-28 20:04:59

标签: variables boolean netlogo agent-based-modeling

我正在编写一个具有两个品种的模型: 性工作者和军官 其中性工作者拥有一个布尔变量,该布尔变量在设置时会随机分布,但随后会根据警官的行为以及与警官的互动而随时更改。 我使用性工作者拥有的[信任吗? ]

,但是我不确定如何在性工作者群体中随机分配变量的y / n。非常感谢您的投入!

非常感谢!

1 个答案:

答案 0 :(得分:2)

如果我正确理解了您的问题,那么您只是希望sexworkers在设置时为true变量在falsetrust?之间随机选择。如果是正确的话,那么one-of可能会为您解决问题-例如,运行以下简单设置:

breed [ sexworkers sexworker ]
sexworkers-own [ trust? ]

to setup
  ca
  create-sexworkers 1000 [
    set trust? one-of [ true false ]
  ]
  print word "% Trusting: "  ( ( count sexworkers with [ trust? ] ) / 
    count sexworkers * 100 )
  reset-ticks
end

如果您正在寻找某种不均匀分布,则可以使用randomrandom-float原语进行简单的分布。例如,如果我希望sexworkers的25%以trust? = true开头,则可以执行以下操作:

to setup-2
  ca
  create-sexworkers 1000 [
    ifelse random-float 1 < 0.25 [
      set trust? true 
    ] [
      set trust? false
    ]
  ]
  print word "% Trusting: "  ( ( count sexworkers with [ trust? ] ) / 
    count sexworkers * 100 )
  reset-ticks
end

对于特定的发行版,请查看各种random reporters

有关加权随机性,请查看rnd extension