Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Netlogo 根据概率设置变量来创造海龟?_Netlogo - Fatal编程技术网

Netlogo 根据概率设置变量来创造海龟?

Netlogo 根据概率设置变量来创造海龟?,netlogo,Netlogo,我试图用1000只海龟来填充一个模型。每只海龟都有三个变量:性别、收入、教育程度。我想根据一些概率来分配这些变量的值。例如。 -48%的几率是女性,52%是男性 -收入低于10万的几率为33%,收入在10万到20万之间的几率为20%,收入在10万到20万之间的几率为xx%,等等。 -20%的无教育机会、7%的博士机会、yy的zz教育机会等 概率将通过csv文件或用户界面提供。稍后,我将制定这些人如何投票的规则(基于统计数据)。但现在,我只需要创建一个具有正确值的总体 我尝试过在某些条件下使用“a

我试图用1000只海龟来填充一个模型。每只海龟都有三个变量:性别、收入、教育程度。我想根据一些概率来分配这些变量的值。例如。 -48%的几率是女性,52%是男性 -收入低于10万的几率为33%,收入在10万到20万之间的几率为20%,收入在10万到20万之间的几率为xx%,等等。 -20%的无教育机会、7%的博士机会、yy的zz教育机会等

概率将通过csv文件或用户界面提供。稍后,我将制定这些人如何投票的规则(基于统计数据)。但现在,我只需要创建一个具有正确值的总体

我尝试过在某些条件下使用“ask n-of”,但随着变量和可能值的增加,它会变得。。。复杂

我也尝试过“rnd:weighted-n-of”和类似的方法,但我似乎无法理解它(我已经25年没有做过统计了):-)

有什么想法吗

祝你一切顺利,
PALL是正确的方法,不需要加权随机。如果您知道总会有1000只海龟,并且您希望48%的海龟是雄性,那么您需要的代码如下:

ask turtles [set sex "female"]
ask-n-of 480 turtles [set sex "male"]
也就是说,您必须先将它们全部设置为一个类别,然后再将一些设置为另一个类别。然而,这只在你有两个类别时有效,因为如果你要求50%为男性,然后要求50%为女性,那么每个
ask-n-of
都是从整个人群中随机抽取的。您可能想要的是这样的:

ask turtles
[ let choose-income random-float 1
  if choose-income < 0.5 [ set income 50000 ]
  if choose-income >= 0.5 and choose-income < 0.8 [ set income 100000 ]
  if choose-income >= 0.8 [ set income 150000 ]
]
询问海龟
[让我们选择收入随机浮动1
如果选择收入<0.5[设置收入50000]
如果选择收入>=0.5并选择收入<0.8[设置收入100000]
如果选择收入>=0.8[设置收入150000]
]
所以你要做的就是把从0到1的间隔分成几个部分,概率等于部分的长度。所以上面的代码会让你有50%的几率得到50000,30%的几率得到100000,20%的几率得到150000


请注意,如果我在模型中对此进行编码,我实际上会使用
if-else
if-else值。但是,这需要嵌套的if/else块,这很难阅读。

您读过Nicolas Payettes的回答吗?它简要概述了如何使用您描述的
rnd
扩展,可以作为复习/澄清。谢谢。Nicolas的精彩解释——我发现,所有其他的解释我都没有理解——部分原因是anon过程的语法显然已经改变了。非常感谢。我的问题是,每一项要求都是从全体人口中抽取的。我知道你是怎么修好的。我想你对if-else的评论是为了表现。但是我需要它对新手来说很容易阅读。请参阅(现在与NetLogo捆绑在一起)以获得嵌套
ifelse
s的替代方案。我不知道,我们一直在寻找类似的东西。谢谢我怎么会错过cf扩展?这是个好消息。是的,嵌套if-else是为了性能,但是您的问题更多的是关于逻辑而不是代码,所以我认为可读性更好:)正是如此。再次感谢:-)