Показать сообщение отдельно
Старый 26.06.2013, 18:36   #3
EvilOkta
Знающий
 
Аватар для EvilOkta
 
Регистрация: 31.07.2008
Сообщений: 321
Написано 108 полезных сообщений
(для 229 пользователей)
Ответ: Случайное возвращение элемента из массива

*некромант mode on*
я бы предложил упрощенный алгоритм, с большим хаосом и хардкором:
- Задать массив значений размерностью в два раза большей, чем кол-во элементов n.
- Распределить элементы по массиву таким образом - 0..n - элементы массива, n+1..2n+1 - элементы типа null)
- Задать диапазон разброса значений для функции рандома равной кол-ву элементов
- Применять к каждому элементу диапазона массива 0..n функцию рандома, в качестве увеличения индекса элемента и перехода его в диапазон n+1..2n+1. При этом если элемент уже имеет отличное от null значение, то инициировать функцию рандома заново.
- Завершить функцию, когда в массиве не останется элементов типа null. В диапазоне n+1..2n+1 будет перемешанный массив, в 0..n - оригинальный.
Перед новой генерацией присвоить диапазону n+1..2n+1 null и можно запускать с начала.
Как то так. Хотя подход Импера для реализации открывает много полезных штук =)

*некромант mode off*
__________________
Области Хаоса - мой новый Youtube проект
(Offline)
 
Ответить с цитированием