• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/lib/security/random.php
  • Класс: BitrixMainSecurityRandom
  • Вызов: Random::getInt
static function getInt($min = 0, $max = PHP_INT_MAX)
{
	if ($min > $max)
	{
		throw new BitrixMainArgumentException(
			'The min parameter must be lower than max parameter'
		);
	}

	$range = $max - $min;

	if ($range == 0)
		return $max;

	if ($range > PHP_INT_MAX || is_float($range))
	{
		throw new BitrixMainSystemException(
			'The supplied range is too great'
		);
	}

	$bits = static::countBits($range) + 1;
	$length = (int) max(ceil($bits / 8), 1);
	$filter = pow(2, $bits) - 1;
	if ($filter >= PHP_INT_MAX)
		$filter = PHP_INT_MAX;
	else
		$filter = (int) $filter;

	do
	{
		$rnd = hexdec(bin2hex(self::getBytes($length)));
		$rnd = $rnd & $filter;
	}
	while ($rnd > $range);

	return ($min + $rnd);
}