Example #1
0
 static function generate_random_number($min = 0, $max = 0)
 {
     // generate seed. TO-DO: Look for a better seed value everytime
     $seed = mt_rand();
     // generate $random
     // special thing about random is that it is 32(md5) + 40(sha1) + 40(sha1) = 112 long
     // hence if we cut the 1st 8 characters everytime, we can get upto 14 random numbers
     // each time the length of $random decreases and when it is less than 8, new 112 long $random is generated
     if (strlen(self::$random) < 8) {
         self::$random = md5(uniqid(microtime() . mt_rand(), true) . $seed);
         self::$random .= sha1(self::$random);
         self::$random .= sha1(self::$random . $seed);
     }
     // take first 8 characters
     $value = substr(self::$random, 0, 8);
     // strip first 8 character, leaving remainder for next call
     self::$random = substr(self::$random, 8);
     $value = abs(hexdec($value));
     // Reduce the value to be within the min - max range. 4294967295 = 0xffffffff = max random number
     if ($max != 0) {
         $value = $min + ($max - $min + 1) * ($value / (4294967295 + 1));
     }
     return abs(intval($value));
 }