$arr = array();
for ($i = 0; $i < 50000; $i++) {
$arr[$i] = rand(1, 100000);
}
echo"Элементов в исходном массиве:";
print_r(count($arr));
//массив уникальных элементов
$arrOfUnic = array_unique($arr);
echo"Элементов в массиве после удаления дублей:";
print_r(count($arrOfUnic));
echo"случайный элемент:";
$randomIndex = array_rand($arrOfUnic);
print_r($randomIndex);
echo"=>";
print_r($arrOfUnic[$randomIndex]);
Всегда один и тот же результат: Элементов в исходном массиве: 50000 Элементов в массиве после удаления дублей: 32768 случайный элемент: 15535=>79545. Если массив
for ($i = 0; $i < 17000; $i++) {
$arr[$i] = rand(1, 25000);
}
По кругу выдается 3 результата:
Элементов в массиве после удаления дублей: 14917 случайный элемент: 2118=>23979
Элементов в массиве после удаления дублей: 14943 случайный элемент: 13481=>23870
Элементов в массиве после удаления дублей: 14878 случайный элемент: 268=>12020
По своему опыту скажу что функция rand генерирует числа ужасно, и с этим ничего не делалось, только в версии 7.1 её уже убрали и оставили как алиас на функцию mt_rand.
Если вы используете версию PHP ниже 7.1, то рекомендую как раз использовать именно функцию mt_rand, дублей должно быть меньше, потому что используется алгоритм: Mersenne Twister Random Number Generator. К тому же ходили слухи что она в разы быстрее чем rand (хотя на самом деле прирост скорости не особо заметен).
UPD. Как альтернативу array_rand могу посоветовать вот такой код, говорят что даже он быстрее и лучше:
$a = ['http://php.net/', 'http://google.com/', 'http://bbc.co.uk/'];
$website = $a[mt_rand(0, count($a) - 1)];
Источник
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости