Zend_Crypt_Math::randInteger PHP Method

randInteger() public static method

Return a random integer between $min and $max
public static randInteger ( integer $min, integer $max, boolean $strong = false ) : integer
$min integer
$max integer
$strong boolean
return integer
    public static function randInteger($min, $max, $strong = false)
    {
        if ($min > $max) {
            require_once 'Zend/Crypt/Exception.php';
            throw new Zend_Crypt_Exception('The min parameter must be lower than max parameter');
        }
        $range = $max - $min;
        if ($range == 0) {
            return $max;
        } elseif ($range > PHP_INT_MAX || is_float($range)) {
            require_once 'Zend/Crypt/Exception.php';
            throw new Zend_Crypt_Exception('The supplied range is too great to generate');
        }
        if (function_exists('random_int')) {
            // available in PHP 7
            return random_int($min, $max);
        }
        // calculate number of bits required to store range on this machine
        $r = $range;
        $bits = 0;
        while ($r) {
            $bits++;
            $r >>= 1;
        }
        $bits = (int) max($bits, 1);
        $bytes = (int) max(ceil($bits / 8), 1);
        $filter = (int) ((1 << $bits) - 1);
        do {
            $rnd = hexdec(bin2hex(self::randBytes($bytes, $strong)));
            $rnd &= $filter;
        } while ($rnd > $range);
        return $min + $rnd;
    }

Usage Example

Esempio n. 1
0
 /**
  * _srand() interception
  *
  * @see ZF-8742
  */
 protected function _srand()
 {
     if (version_compare(PHP_VERSION, '5.3.0', '>=')) {
         return;
     }
     if (!self::$_srandCalled) {
         srand(Zend_Crypt_Math::randInteger(0, PHP_INT_MAX));
         self::$_srandCalled = true;
     }
 }
All Usage Examples Of Zend_Crypt_Math::randInteger