
20.04.2012, 01:38
|
|
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Обычно "неповторяющийся рэндом" как раз и делают на массивах. Принцип простой – после того как элемент массива был использован, он удаляется из массива (массив тут естественно временная копия исходного массива). Когда массив заканчивается, делаем новую копию. Также надо сделать проверку на совпадение последнего выпавшего элемента и нового, потому как алгоритм выше гарантирует неповторяемость только на протяжении одного "цикла", а на стыках возможны повторы (из новой полной копии массива может выпасть тот же элемент, который был последним единственным в предыдущем проходе).
Добавлено через 10 минут
Другой вариант – когда элемент удаляется из массива, он запоминается в переменной, а когда удаляется следующий элемент, этот сохраненный записывается в массив обратно. И хотя теоретически он может выпасть сразу на следующей итерации, он все-равно будет "отделен" другим элементом (1 0 1). Так же, как и с проверкой на "стыках".
|