Читаем Справочник по PHP полностью

Дело в том, что хотя числа, генерируемые mt_rand(), достаточно равновероятны, но у них есть один нелостаток: последовательность сгенерированных чисел будет одинакова если сценарий вызывать несколько раз подряд. Функция mt_srand() как раз решает данную проблему: она выбирает новую последовательность на основе параметра $seed, причем практически непредсказуемым образом.

mt_srand(time()+(double)microtime()*1000000);

for($i=0;$i<=10;$i++) {

$x = mt_rand(1,10);

};


В этом случае последовательность устанавливается на основе времени запуска сценария (в секундах), поэтому она достаточно непредсказуема. Для еще более надежного результата рекомендуется приплюсовать сюда еще микросекунды (что и было сделано), а также идентификатор процесса, вызывавшего сценарий.


mt_getrandmax


Возвращает максимальное MT-случайное число.

Синтаксис:

int mt_getrandmax()

Возвращает максимальное число, которое может быть сгенерированно функцией mt_rand() - иными словами, константу RAND_MAX

$max = mt_getrandmax();

// $max = 2147483647



lcg_value


функция генерирует случайное дробное число.

Синтаксис:

double lcg_value()

Эта функция возвращает псевдослучайное дробное число в диапазоне от 0 до 1.

Перевод в различные системы счисления


base_convert


Конвертация числа из одной системы счисления в другую.

Синтаксис:

string base_convert(string $number, int $frombase, int $tobase)

Переводит число $number (заданное как строка в системе счисления по основанию $frombase) в систему по основанию $tobase. Параметры $frombase и $tobase

могут принимать значения только от 2 до 36 включительно. В строке $number цифры обозначают сами себя, а буква a соответствует 11, b -12, и т.д. до z, которая обозначает 36. Например, следующие команды выведут 11111111 (8 единичек), потому что это - не что иное, как представление шестнадцатиричного числа FF в двоичной системе счисления:

$x = base_convert("FF",16,2); //$x = 11111111

$x = base_convert("11111111",2,16); //$x = FF

$x = base_convert("200",10,16); //$x = C8



bindec


Производит конвертацию двоичного числа в десятичное.

Синтаксис:

int bindec(string binary_string)

Преобразует двоичное число, заданное в строке binary_string, в десятичное число. Максимальное число, которое еще может быть преобразовано, равно 2 147 483 647

$x = bindec(11111111); // $x = 255

$x = bindec(10101010); // $x = 170

$x = bindec(2147483647); // $x = 1111111111111111111111111111111



decbin


Производит конвертацию десятичного числа в двоичное.

Синтаксис:

string decbin(int $number)

Возвращает строку, представляющую собой двоичное представление целого числа $number. Максимальное число, которое еще может быть преобразовано, равно 2 147 483 647, которое выглядит как 31 единичка в двоичной системе.

Существует аналогичные функции для восьмеричной и шестнадцатиричной систем. Называются они так же, только вместо "bin" подставляются соответственно "oct" и "hex".

$x = decbin(255); // $x = 11111111

$x = decbin(2147483647); // $x = 1111111111111111111111111111111



dechex


Производит конвертацию десятичного числа в шестнадцатеричное.

Синтаксис:

string dechex(int number)

Возвращает строку, представляющую собой шестнадцатеричное представление целого числа number. Максимальное число, которое еще может быть преобразовано, равно 2 147 483 647

$x = dechex(2147483647); // $x = 7fffffff



decoct


Производит конвертацию десятичного числа в восьмеричное.

Синтаксис:

string decoct(int number)

Возвращает строку, представляющую собой восьмеричное представление целого числа number. Максимальное число, которое еще может быть преобразовано, равно 2 147 483 647

$x = dechex(2147483647); // $x = 17777777777



hexdec


Производит конвертацию шестнадцатеричного числа в десятичное.

Синтаксис:

int hexdec(string hex_string)

Преобразует шестнадцатеричное число, заданное в строке hex_string, в десятичное число. Максимальное число, которое еще может быть преобразовано, равно 7fffffff

$x = hexdec(7fffffff); // $x = 2147483647



octdec


Производит конвертацию восьмеричного числа в десятичное.

Синтаксис:

int octdec(string octal_string)

Перейти на страницу:

Похожие книги