看看下面的代码,我知道我们有一个数组$r。for循环的计算结果为true,并转到rand函数。rand函数生成一个介于0和100,000之间的数字。然后,if-statement检查生成的数字是否小于或等于10。
最后一部分让我感到困惑,因为我认为如果生成的数字小于10,那么它会将1加到它上面。
有人能解释一下这段代码吗。谢谢。
<?php
$r = array(0,0,0,0,0,0,0,0,0,0,0);
for ($i=0;$i<1000000;$i++) {
$n = rand(0,100000);
if ($n<=10) {
$r[$n]++;
}
}
print_r($r);
?>发布于 2014-02-02 17:07:57
它将与每个兰特给出的小于或等于10的数字(0到10)对应的数组元素加1。
基本上,您看到的是一个随机数分布的演示。该程序将显示分布中前11个数字的点击数,而不是所有数字(这将是一个相当大的数组)。
在完全相等的分布中,您将在每个数组元素中获得1。但由于我们处理的是随机数,实际结果通常会有所不同。
发布于 2014-02-02 17:08:29
“我认为,如果生成的数字小于10,则会将其加1。”
No it DO NOT add 1 to generated number with id $n,但it DO add 1 to $r array element with index $n。
例如,如果在第一次循环迭代中得到$n = 4,那么$r数组将如下所示:
$r = array(0,0,0,0,1,0,0,0,0,0,0);这是因为本例中的$r[$n]++;表示$r[4]++,它是$r[4]的增量,等于
$r[4]+=1或
$r[4] = $r[4]+1$n 不会在一次迭代中被更改,但$r 是。
发布于 2014-02-02 17:09:12
如果数字小于10,则将数组$r中的相应索引加1。
这意味着对于每个数字,我们都会计算小于10的次数。
示例:在循环结束时,$r[3]值等于我们绘制数字3的次数
https://stackoverflow.com/questions/21508810
复制相似问题