Приглашаем посетить
Маяковский (mayakovskiy.lit-info.ru)

Учебник по PHP : Математические функции : Случайные числа

Математические функции : Случайные числа

srand
Производит инициализацию генератора случайных чисел.

Синтаксис :
void srand(int seed)

Инициализирует генератор случайных чисел занчением seed.
srand((double) microtime()*1000000);
$random = rand();
echo $random;
Вот что получиться:
5645

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

Синтаксис :
int getrandmax()

Эта функция возвращает максимальное значение, которое можно получить при помощи функции генерации случайных чисел rand().
Обычно это 32767

rand
Производит генерацию случайного числа.

Синтаксис :
int rand([int max [, int min]])

При вызове с необязательными параметрами min и max эта функция генерирует случайное число, лежащее в пределах этих параметров включительно.
Если параметры min и max отсутствуют, возвращается число, лежащее в пределах от 0 до RAND_MAX.
Для корректной работы данной функции перед ее использованием нужно проинициализировать генератор случайных чисел функцией srand().

mt_rand
Функция возвращает MT-случайное число, достаточно равномерно даже для того, чтобы использовать его в криптографии.

Синтаксис :
int mt_rand(int $min=0, int $max=RAND_MAX)

Если вы хотите генерировать числа не от 0 до RAND_MAX (эта константа задает максимально допустимое случайное число, и ее можно получить при помощи вызова mt_getrandmax()), задайте соответствующий интервал в параметрах $min и $max. Не забудьте только перед первым вызовом этой функции запустить mt_srand().

mt_srand(time()+(double)microtime()*1000000);
$x = mt_rand(1,100); // $x - значение от 1 до 100

mt_srand
Настраивает MT-генератор случайных чисел на новую последовательность.

Синтаксис :
void mt_srand(int seed)

Дело в том, что хотя числа, генерируемые 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.

Назад Содержание Вперед