生成随机数错误

时间:2012-11-13 11:48:15

标签: php

我正在测试一个基于此评论在php文档中找到的php函数: http://www.php.net/manual/en/function.rand.php#108861

<?php

    function RandNumber($e) {

        for ($i = 0; $i < $e; $i++) {
            $rand =  $rand .  rand(0, 9);  
        }
        return $rand;
    }

    echo RandNumber(4);
    // Outputs a 6 digit random number
?>

我收到错误通知:

  

未定义的变量:第7行的/var/www/eod.php中的rand

这是第7行:

$rand =  $rand . rand(0, 9);

为什么导致此错误,因为函数按预期工作?

3 个答案:

答案 0 :(得分:2)

初始化您的$rand变量以删除此警告:

 function RandNumber($e){
     $rand="";
     for($i=0;$i<$e;$i++){
        $rand =  $rand.rand(0, 9);  
     }
     return $rand;
 }

请注意,您可以简化代码:

 function RandNumber($e){
     $rand="";
     for(;$e-->0;){ // no need for an additional variable
        $rand .= rand(0, 9); // addition and assignement with one operator  
     }
     return $rand;
 }

答案 1 :(得分:2)

要输出随机的6位数字(如果您需要更大的数字,大于mt_getrandmax(),此解决方案将失败),只需使用

mt_rand(100000, 999999);

要包含前导零(000123)的数字,您可以使用my_rand(0, 999999)str_pad($number, 6, "0", STR_PAD_LEFT);的组合

不需要花哨的循环。

答案 2 :(得分:1)

这不是错误..这是一条通知消息..如果你不想出现这个通知你应该在做循环之前定义它:

$rand = '';

for($i=0;$i<$e;$i++){
 $rand =  $rand .  rand(0, 9);  
}