Кто может на пальцах объяснить как работает array_rand()?
Дык дайте ему исходники алгоритма от автора, пусть разбирается
Емнип 90% рандомайзеров работают на 3-4 переменных, завязанных на текущем времени, цикле тика процессора и хешфункции для "неприблизительности"(то есть что бы результат не был линейно от них зависим). Конкретно array_rand() функционально аналогичен mt_rand().  Это "легкие" алгоритмы(быстро выполняющиеся), не претендующие на хороший защищенный рандомный результат, для этих целей рекомендуются более другие, "тяжелые" функции, чт в принципе описано в мануале.Предостережение
Данная функция не генерирует криптографически безопасные значения и не должна использоваться в криптографических целях. Если вам требуется криптографически безопасное значение, подумайте об использовании функций random_int(), random_bytes() или openssl_random_pseudo_bytes() вместо данной.