Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > PHP: Общие вопросы > как реализовать случайный выбор в скрипте |
Автор: A67809R 25.1.2013, 22:16 |
здравствуйте. Как можна реализовать например в скрипте.... Что бы например, 1000 человек приходящих ко мне на сайт, не попадали бы все, а перенаправлялись бы заданое количество посетителей, на другой. Подскажите плизсс |
Автор: skyboy 25.1.2013, 22:58 |
http://php.net/rand |
Автор: Vardoulacha 26.1.2013, 04:43 |
Лучше все таки http://php.net/manual/ru/function.mt-rand.php он как минимум быстрее. А вообще задача какая-то туманная, и мне например показалось что заранее известно кличесто людей которое нужно перенаправить из 1000, тогда вот решение http://php.net/manual/ru/function.array-rand.php или можно вообще взять массив и сделать ему http://php.net/manual/ru/function.shuffle.php а потом взять первые значения нужное количество. |
Автор: MaXL 29.1.2013, 04:14 | ||||
Почему туманная. Вполне http://ru.wikipedia.org/wiki/%D0%9A%D0%BB%D0%BE%D0%B0%D0%BA%D0%B8%D0%BD%D0%B3, правда примитивное и наивное решение ![]()
чо ![]() |
Автор: Vardoulacha 29.1.2013, 08:12 |
Gold Dragon, вот http://stackoverflow.com/questions/2753268/php-difference-between-shuffle-and-array-rand написано что разница очень мала даже на больших массивах |
Автор: Gold Dragon 29.1.2013, 18:03 | ||
не всё так просто.. или я не так проверяю или очень даже разные результаты ![]() вот тест
при 10000 shuffle - 0.00394 array_rand - 0.0008 при 100000 shuffle - 0.21016 array_rand - 0.0205 при 1000000 shuffle - 2.71401 array_rand - 0.02954 |
Автор: MaXL 25.2.2013, 14:47 |
Это тест чего ![]() Какое вы имеете право сравнивать эти две функции ? |
Автор: Arantir 25.2.2013, 19:40 | ||||||
Добавлено через 10 минут и 16 секунд
n = 10 1.0E-5 1.0E-5 ------------- n = 100 2.0E-5 7.0E-5 ------------- n = 1000 0.00024 0.0008 ------------- n = 10000 0.00263 0.01136 ------------- n = 100000 0.17183 0.15554 ------------- n = 1000000 2.03217 1.75671 ------------- Зависимость нелинейная. Но при малых N быстрее shuffle, а при больших - array_rand. |
Автор: MaXL 26.2.2013, 11:29 | ||
А вы видели исходное сообщение, к которому написан мой комментарий ? Там ваше пресловатую $n, для функции array_rand равно еденицы. Основное отличие в том, что shuffle делает перестановку массива, а array_rand возвращает массив случайных чисел из заданного диапазона (ключи массива). Естественно, что операция перестройки массива сложнее. |
Автор: Gold Dragon 27.2.2013, 18:54 |
Кто сказал??? Я чтобы подобное утверждать провёл тесты. А что сделал ты? Это вообще что за бред. MaXL, у тебя право собственности на эти функции что ли ![]() |
Автор: Arantir 27.2.2013, 20:40 | ||
Невероятно, но именно это я написал чуть выше процитированной вами части моего сообщения. =) Может и сложнее... Но для всех N, с разумными и практично применимыми значениями, эта операция быстрее. Не могу представить адекватного использования массивов, объемом более полмиллиона элементов, в PHP. |
Автор: MaXL 17.4.2013, 06:57 | ||||||
![]() После этой строчки
$array будет перемешан, а в $a будет http://www.php.net/manual/ru/function.shuffle.php true. А вот в случае с:
в $a будет массив перемешанных ключей, а массив $array останеться прежнем. В ваших тестах, как минимум на этоп этапе происходит выделение памяти под новый массив. Абсолютно разные функции, и разное поведение. |