-1

我没有发现我的代码有任何问题,但它只输出 0 到 20 之间的数字,而没有遵循我施加的时间限制。请帮帮我。下面是代码:

<!DOCTYPE html>
<html>
<?php
    set_time_limit(0);
    class random{
        var $max;
        var $min;
        function irregularnos($min,$max) {
             $num = '';
             $i = 0;
             $this->min=$min;
             $this->max=$max;
             while($i < 25)
             {
                 $num .= mt_rand($min,$max);
                 echo $num . "</br>";
                 $num = '';
                 $i++;
             }
         }
    } 
    $rand1 = new random;
    $rand2 = new random;
    $rand3 = new random; 
    $rand4 = new random;
    date_default_timezone_set('Europe/Berlin');
    $start_time = new DateTime(); //current time 
    while(true){
        if ($start_time->modify('+1 seconds')<= new DateTime() and  $start_time->modify('+2      seconds') > new DateTime()) { $rand2->irregularnos(21,50);}
else  if ($start_time->modify('+2 seconds') <= new DateTime() and $start_time-   >modify('+3 seconds') > new DateTime()) { $rand3->irregularnos(51,70);}
else if ($start_time->modify('+3 seconds') <= new DateTime() and $start_time->modify('+4 seconds') > new DateTime()) {$rand4->irregularnos(71,100);}
else if (new DateTime() < $start_time->modify('+1 seconds')) {$rand1->irregularnos(0,20);}
else if(new DateTime()> $start_time->modify('+4 seconds'))  { break;}
    } 
?>
4

1 回答 1

0

代码正在运行。可能您希望代码对每个随机数只运行一次,而实际上循环可能会执行很多次,比如第一秒内执行 50 次。

在那一整秒中,随之而来的条件是时间在start_time和之间start_time + 1 second,因此激活了 0-20 序列。

另外,请注意您没有正确使用您的对象 - 例如,实例变量 min 和 max 从未实际使用过,并且您的调用原型将使声明四个数字生成器毫无意义。

此代码添加了一个暂停以显示正在生成的所有数字:

<?php
    set_time_limit(0);
    class random{
        var $min;
        var $max;
        function __construct($min, $max) {
                $this->min = $min;
                $this->max = $max;
        }
        function irregularnos($n) {
            for ($i = 0; $i < $n; $i++) {
                $num = mt_rand($this->min, $this->max);
                echo $num . '</br>';
             }
         }
    }
    $rand1 = new random(0,20);
    $rand2 = new random(21,50);
    $rand3 = new random(51,70);
    $rand4 = new random(71,100);
    date_default_timezone_set('Europe/Berlin');
    $start_time = time();
    for($quit = false; !$quit;) {
        // How much time has elapsed since $start_time?
        switch(time() - $start_time)
        {
                case 0: $rand1->irregularnos(25); break;
                case 1: $rand2->irregularnos(25); break;
                case 2: $rand3->irregularnos(25); break;
                case 3: $rand4->irregularnos(25); break;
                default: $quit = true; break;
        }
        print "---\n";
        usleep(500000);
    }
?>
于 2013-04-19T22:15:41.237 回答