<?php 
    class Rand { 
        protected $ret, $tracer, $micro, $sec, $FLOAT, $MUL, $precisement; 
 
        public function frand($to=100, $from=0, $if_float=0, $if_abs=true, $if_trace=false) { 
            $to++; 
            $this->tracer = microtime(); 
            list($this->micro, $this->sec) = explode(" ", $this->tracer); 
            $this->tracer = ' - '.$this->tracer; 
            $this->FLOAT = ''; 
            $this->MUL = 1; 
            if ($if_float > 0) {$to--; $this->FLOAT = '.'.frand(pow(10, $if_float));} 
            if ($if_trace === false) { $this->tracer = '';} 
            if ($if_abs === false) { $this->MUL = frand(2) == 0 ? -1 : 1; } 
            $this->micro = pow($this->micro, 2) + $this->micro +41; // according to Euler's formula 
            $this->sec = pow($this->sec, 2) + $this->sec +41; 
            $this->precisement = strlen($to) +substr($this->micro, 0, 2) +2; 
            $this->ret = sprintf("%.{$this->precisement}f", ($this->micro/$this->sec)); 
            $this->ret = ((((substr($this->ret, (strlen($to) > 3 ? (5+strlen($to))*(-1) : -5)) % ($to-$from)) + $from).$this->FLOAT)*$this->MUL).$this->tracer; 
            return $this->ret; 
        } 
    } 
?> 
 
 |