ARRAY_RAND Значения повторяються

Статус
В этой теме нельзя размещать новые ответы.

Toxic_Cat

Новичок
ARRAY_RAND Значения повторяються

Скрипт состоит из большого количества циклов.
Имеються большие массивы (по 4000 значений).

$new_array = $xx_array[array_rand($xx_array)];

В цикле выдает большое количество повторов.
Пробовал на хостинге, то-же самое...

Как сделать, чтобы значения не повторялись по 2-5 раз?
Вот массив чисел, выдаваемых:
2555
6783
1240
11334
4597
7227
6690
11334
7227
4496
2555
6903
4496
2555
1240
11229
7227
6690
11334
7227
2555
6903

и т.д.
И это рэндом в массиве от 1 - 11225 чисел...

Подскажите, как избавиться от постоянных "повторений"?
 

Toxic_Cat

Новичок
Автор оригинала: donflash
[m]array_unique[/m]?
Нет, так как функция не "помнит" предидущих значений.
Мне нужно сгенерировать 50 квадратов с разным цветом фона и разным размером...

Функция вызываеться в цикле, в самой функции есть цифлы и в итоге все повторяеться 3-5 раз!
 

kruglov

Новичок
Toxic_Cat
А где ранее упоминалось, что "15000 значений массива, по 100 символов в каждом"?
 

denver

?>Скриптер
Toxic_Cat
Я не смотрел исходники, но думаю shuffle просто назначает случайные keys, а потом делает сортировку. Можешь попробовать делать то же с помощью rand, isset а затем sort и посмотреть что быстрее ;)
 

Toxic_Cat

Новичок
Автор оригинала: kruglov
Toxic_Cat
А где ранее упоминалось, что "15000 значений массива, по 100 символов в каждом"?
Да, не упоминалось...

В общем shuffle использовать удобно.
Лишь бы memory_limit не привышать.

P.S. еще не тестировал, но возможно, что функция rand(x,y); будет так-же давать "повторяющиеся" значения.
 

kruglov

Новичок
Toxic_Cat
Любые генераторы псевдослучайных последовательностей должны давать повторы. Иначе они просто не будут случайными. Ибо вероятность выпадения случайного числа не зависит от предыстории.
 

Фанат

oncle terrible
Команда форума
о, блин. очередной гоблин.
решил поднять тему и поделиться сокровенными знаниями.

ну, раз уж подняли, то и я встряну

Toxic_Cat
И это рэндом в массиве от 1 - 11225 чисел...
непонятно, что не устраивает.
по-моему, отличный рэндом.
 

Toxic_Cat

Новичок
Автор оригинала: Фанат
решил поднять тему и поделиться сокровенными знаниями.

ну, раз уж подняли, то и я встряну

Toxic_Cat

непонятно, что не устраивает.
по-моему, отличный рэндом.
Читать научись.
Я проблему не просто так поднял...

Сгенерировал 20 квадратов, уникальных всего 2, остальные совпадают как две капли (цвет, линии внутри, текст), разница лишь в размерах...
Хотя функция каждый раз берет Рэндомные значения всех значений.
(три параметра цвета RGB, координаты линий, координаты изображения, координаты текста)

о, блин. очередной гоблин.
Я не такой как ты ;)

Сейчас пользуюсь shuffle и доволен.
 

hermit_refined

Отшельник
о, блин. очередной гоблин.
Я не такой как ты
хы. вообще-то это было не про вас.
но вы, конечно, молодец, не растерялись и нахамили...
Сейчас пользуюсь shuffle и доволен
если из 1500 значений нужно выбрать 20 - у [m]array_rand[/m] есть второй параметр.
ну и ещё под сомнение можно поставить целесообразность генерирования/загрузки таких гигантских массивов.
так что хвалиться не стоит.
 

Toxic_Cat

Новичок
Автор оригинала: hermit_refined
хы. вообще-то это было не про вас.
но вы молодец, не растерялись и нахамили...
Я конечно извиняюсь. Но так и не понял к кому Фанат обращаеться :)

если из 1500 значений нужно выбрать 20 - у [m]array_rand[/m] есть второй параметр.
ну и ещё под сомнение можно поставить целесообразность генерирования/загрузки таких гигантских массивов.
так что хвалится тоже не стоит.
Нет, функция каждый раз выбирает лишь одно РЭНДОМНОЕ значение...

Позже поэксперементирую с Вашим методом (по поводу array_rand).

P.S. в каждом массиве данных на 100-300кб по объёму примерно. Нет возможности избавиться от них либо как-то уменьшить объем .
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху