概率和百分比的解释

时间:2014-07-22 21:58:15

标签: netlogo

非常感谢您对我的模型进行编码的帮助,

如果您不介意,我想问一下编码中的一些解释 对不起,我不是数学方面的专家

to move
ask turtles with [gender = "male" ]
[ if ( random-float 1) <= 0.025]

为什么它是&lt; =这个代码的解释是什么,

和百分比

 ask turtles

  [ if random 100 <= 50
       [become-fat]]

同样的问题为什么&lt; =如果我们总是说50%的人会胖,为什么我们把这个标志???

随机和随机浮点数之间有什么不同

对不起骚扰

1 个答案:

答案 0 :(得分:3)

两个原语之间的区别在于:

两者都可以用来在NetLogo中以概率方式发生事情。我将首先使用random,这稍微容易理解。

使用random

正如the documentation中所述,如果您将正数传递给random,它会给您一个大于或等于0的数字,但严格地小于该数字。

例如,random 2将始终为您提供0或1.您可以使用它来模拟硬币的翻转:

ifelse random 2 = 0 [ print "heads" ] [ print "tail" ].

这将在50%的时间内打印"heads"random 2给你0),"tail" 50%的时间打印{当random 2给你1时)

现在,通过使用random 100代替random 2,可以很容易地将其概括为以百分比表示的概率。我将使用50%的例子,但很可能是25%,80%甚至1%或100%。

现在random 100给你一个0到99之间的数字,这意味着它可以给你的前50个数字是:0,1,2,3 ......一直到49.接下来的50个是:50,51,52,53 ......一直到99.如果你愿意的话,你可以想象一个标记为0到99的100面骰子。

如果你想让你的海龟变得肥胖&#34;有50%的时间,你可以这样做:

ask turtles [ if random 100 < 50 [become-fat] ]

请注意,我使用<(严格减少)符号而不是<=(小于或等于)符号。这是因为我只希望海龟变胖,如果骰子&#34;登陆前50个面孔之一,从0到49。

(如果您使用random 100 <= 50,就像上面发布的代码一样,他们实际上有51%的可能性变胖,而的概率为49%。现在也应该能够弄清楚为什么像if random 100 = 50这样的东西没有意义:只有当骰子准确地落在50上时才会出现这种情况,这只会发生在1%的情况下时间。)

如果你希望你的海龟只有20%的时间变胖,你想要使用骰子的前20个面,从0到19:

ask turtles [ if random 100 < 20 [become-fat] ]

在处理NetLogo中的概率时,通常使用random 100

使用random-float

然而,有时你需要更高的精确度。数学导向的工作通常将概率表示为0.0(0%)和1.0(100%)之间的数字。在这些情况下,random-float 1会派上用场。同样,如in the documentation所述,random-float将为您提供一个介于0(包含)和您传递给它的数字(仅限于)之间的数字。因此,random-float 1为您提供介于0.0和1.0之间的数字(但绝不会恰好为1.0)。

这个表达式:

random-float 1 < 0.025

在2.5%的时间都是如此。

骰子隐喻不适用于random-float,但您可以设想roulette wheel(或wheel of fortune)。询问random-float 1 < 0.025是否就像画一个&#34;馅饼切片&#34;这是车轮周长的2.5%,旋转车轮,检查球(或箭头,或其他什么)是否落入该切片。

现在,如果您使用<=而非<使用random-float,这是否重要?不是很多。如果车轮在将您的饼形切片与车轮其余部分分开的线上完全,则只会产生差异,并且发生这种情况的可能性非常小。