php初学者,需要一些解释吗?

时间:2014-02-02 09:04:16

标签: php

查看下面的代码,我知道我们有一个数组$r。 for循环的计算结果为true,并转到rand函数。 rand函数生成0到100,000之间的数字。 然后if - 语句检查生成的数字是否小于或等于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); 
?>

3 个答案:

答案 0 :(得分:0)

它向每个rand给出的数字(0到10)对应的数组元素添加一个小于或等于10的数据元素。

基本上你所看到的是随机数分布的演示。该程序将显示您在分发中的前11个数字中获得的命中数,而不是所有数据(这将是一个非常大的数组)。

在完全相等的分布中,每个数组元素得到1。但由于我们处理随机数,实际结果通常会有所不同。

答案 1 :(得分:0)

“我认为如果生成的数字小于10,那么它会增加1。”

不是不要在ID <{1}}的生成的号码中添加1,但 DOES 在{{1}添加1索引为$n的数组元素。

例如,如果在第一次循环迭代中,您将获得$r,那么$n数组将如下所示:

$n = 4

这是因为$r在这种情况下意味着$r = array(0,0,0,0,1,0,0,0,0,0,0); ,它是{em>增量$r[$n]++; ,等于

$r[4]++

$r[4]

$r[4]+=1 不会在一次迭代中更改,但$r[4] = $r[4]+1

答案 2 :(得分:0)

如果数字小于10,则它会向数组$r中的相应索引添加一个。

这意味着我们计算每个数字小于10的次数。

示例:在循环结束时,$r[3]值得我们绘制数字的时间3