![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
neoks |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 425 Регистрация: 5.7.2010 Репутация: нет Всего: 1 |
Даже не знаю как правильно сказать, вообщем есть массив например из 5 значений
При запросе мне нужно вытащить одно из значений в массиве, сейчас использую array_rand, но теперь нужно как-то сделать так что бы зависело от длины массива, чем меньше его индекс тем чаше его использовать. Например было сделано 15 запросов, следовательно должно получится так:
Пока не вкуриваю как это реализовать) |
||||
|
|||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
Ну и в чем проблема?
Есть массив $x = ['a','b','c','d','e']; Собираем новый массив $y, первый элемент масиива $x повторяем количество раз, равное длине массива $x, второй элемент - длина $x-1 и так далее, последний элемент вставлен один раз. Выбираем случайное число из массивва $y. profit... -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
neoks |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 425 Регистрация: 5.7.2010 Репутация: нет Всего: 1 |
Если я правильно понял то так наверно
Но чет не такой результат не такой как ожидал, получается вот такое увы(
|
||||
|
|||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
-------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
neoks |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 425 Регистрация: 5.7.2010 Репутация: нет Всего: 1 |
ksnk Спасибо! Единственное что меня смущает не слишком ли круто создавать новый массив постоянно особенно если в $x будет скажем длина в 500 значение, тогда $y наверно будет весить под 30 тонн что будет грузить сервачек нехило и жрать память, нет ли какого-то щадящего метода для этой задачки))
|
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
Можно без массива, но с циклом
![]() Можно вспомнить про арифметическую прогрессию и обнаружить, что количество элементов в массиве $y - сумма членов арифметической прогрессии 1..X, равно X*(X+1)/2= Y Сгенерируем случайное число Z - от 0 до Y-1 Отнимем от Z число X, если результат не больше нуля - получили первое значение массива. Отнимем X-1. Если результат не более нуля - получили второе... и так далее, пока не найдем нужный индекс. Можно вспомнить про двоичные деревья и разные прочие графы, чтобы цикл был чуть побыстрее. А можно сначала и так... -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
neoks |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 425 Регистрация: 5.7.2010 Репутация: нет Всего: 1 |
ksnk, Спасибо) думаю пока обойдусь массивами)) а то арифмети не по мне))
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |