Jun 17

Решил опытным путем проверить уникальность генерируемых значений функцией mt_rand().

$unique = array();
for($i = 0; $i < 100000; $i++) {
$unique[] = mt_rand();
}
echo count($unique) . ' elementov v massive';
echo 'iz nix unikalnix: ' . count(array_unique($unique));

———————–
1 запуск:
100000 elementov v massive
iz nix unikalnix: 99998
———————–
2 запуск:
100000 elementov v massive
iz nix unikalnix: 99995
———————–
3 запуск:
100000 elementov v massive
iz nix unikalnix: 99998

При установке кол-ва итераций в миллион результаты получились следующими:
1 запуск:
1000000 elementov v massive
iz nix unikalnix: 999736
———————–
2 запуск:
1000000 elementov v massive
iz nix unikalnix: 999775
———————–
3 запуск:
1000000 elementov v massive
iz nix unikalnix: 999741

При замене функции mt_rand() на rand() результат получился совсем уж смешной:
1000000 elementov v massive
iz nix unikalnix: 32768

Неудивительно, что именно mt_rand() рекомендуют использовать вместо rand() ;)

Написал [YS.PRO] :: тэги: , , , , ,