Показать сообщение отдельно
Старый 23.09.2002, 16:04
Dendroid вне форума Посмотреть профиль Отправить личное сообщение для Dendroid Посетить домашнюю страницу Dendroid Найти все сообщения от Dendroid
  № 3  
Dendroid
 
Аватар для Dendroid

Регистрация: Dec 1999
Адрес: Магадан
Сообщений: 763
То, что ты описал - это и есть алгоритм
Если слово в слово переложить это в AS, то получиться:
Код:
// возвращает индексы ненулевых значений массива aaa в случайном порядке
var aaa = new Array(1, 0, 1, 0, 0, 0, 1, 0, 0, 1);
var flag;
function selectN() {
	var k, n = random(aaa.length);
	for (var i = 0; i<aaa.length; i++) {
		k = (n+i)%aaa.length;
		if (aaa[k]) {
			break;
		}
	}
	aaa[k] = 0;
	flag = i == aaa.length ? 0 : 1;
	return flag ? k : -1;
}
trace(selectN());
trace(selectN());
trace(selectN());
trace(selectN());
trace(selectN());
Конечно это еще можно оптимизировать (если надо).....
__________________
Верить никому нельзя. Мне - можно. :)