Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Flash > ActionScript

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 01.07.2004, 18:01
Nox Noctis вне форума Посмотреть профиль Отправить личное сообщение для Nox Noctis Посетить домашнюю страницу Nox Noctis Найти все сообщения от Nox Noctis
  № 1  
Nox Noctis
don't panic!
 
Аватар для Nox Noctis

Регистрация: Aug 2001
Сообщений: 4,121
а! можно и не дублировать :)
хотя в принципе один хрен наверно, щас померяем что быстрее работает...
Код:
Array.prototype.shuffle = function() {
	var dummy = [];
	while (this.length) {
		var rnd = random(this.length);
		var item = this[rnd];
		this.splice(rnd, 1);
		dummy.push(item);
	}
	this.splice.apply(this, new Array(0, this.length).concat(dummy));
};
ASSetPropFlags(Array.prototype, "shuffle", 3, 8);
//
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
a.shuffle();
trace(a);


Последний раз редактировалось Nox Noctis; 01.07.2004 в 18:29.
Старый 01.07.2004, 18:33
Nox Noctis вне форума Посмотреть профиль Отправить личное сообщение для Nox Noctis Посетить домашнюю страницу Nox Noctis Найти все сообщения от Nox Noctis
  № 2  
Nox Noctis
don't panic!
 
Аватар для Nox Noctis

Регистрация: Aug 2001
Сообщений: 4,121
ыы... а можно еще и так ведь :))
Код:
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
fsort = function () {
	return random(2)
}
a.sort(fsort);
trace(a);
правда что-то меня тут смущает... не могу понять что..

Старый 01.07.2004, 18:56
DeliMIter вне форума Посмотреть профиль Отправить личное сообщение для DeliMIter Найти все сообщения от DeliMIter
  № 3  
DeliMIter
некрофил
 
Аватар для DeliMIter

Регистрация: Mar 2002
Адрес: ...по колено в кровище...
Сообщений: 2,292
Вскрытие показало, что вот этот
Код:
function shuffle(suxx) {
  var len = suxx.length
  for (var i=0; i<len; i++) {
    var index = random(len);
    var item = suxx[index];
    suxx[index] = suxx[i];
    suxx[i] = item;
  }
}
алгоритм - самый быстрый. 2мс на 320 элементов. Вариант с сортировкой - 75, остальные - за сотню.
__________________
...убивать людей не удовольствия ради, но для еды.

Старый 01.07.2004, 19:19
Елё вне форума Посмотреть профиль Отправить личное сообщение для Елё Посетить домашнюю страницу Елё Найти все сообщения от Елё
  № 4  
Елё
 
Аватар для Елё

Регистрация: Jun 2002
Адрес: Москва
Сообщений: 287
Отправить сообщение для Елё с помощью Skype™
Цитата:
Оригинал написал(а) Nox Noctis
ыы... а можно еще и так ведь )
Код:
a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
fsort = function () {
	return random(2)
}
a.sort(fsort);
trace(a);
правда что-то меня тут смущает... не могу понять что..
Код:
var z = [0,0,0,0,0,0,0,0,0,0];

for(var x = 0; x<1000; x++)
{
	a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
	fsort = function () {
		return random(2)
	}
	a.sort(fsort);
	for(var i = 0; i<10; i++)
		if(a[i] == 0) z[i]++;
}
trace(z);
Результат:
45,61,83,95,128,124,112,137,114,101

Старый 01.07.2004, 19:22
Елё вне форума Посмотреть профиль Отправить личное сообщение для Елё Посетить домашнюю страницу Елё Найти все сообщения от Елё
  № 5  
Елё
 
Аватар для Елё

Регистрация: Jun 2002
Адрес: Москва
Сообщений: 287
Отправить сообщение для Елё с помощью Skype™
Цитата:
Оригинал написал(а) DeliMIter
Вскрытие показало, что вот этот
Код:
function shuffle(suxx) {
  var len = suxx.length
  for (var i=0; i<len; i++) {
    var index = random(len);
    var item = suxx[index];
    suxx[index] = suxx[i];
    suxx[i] = item;
  }
}
алгоритм - самый быстрый. 2мс на 320 элементов. Вариант с сортировкой - 75, остальные - за сотню.
Тут распеделение тоже не очень ;-)
97,113,86,111,106,94,95,97,105,96

Старый 01.07.2004, 19:28
Елё вне форума Посмотреть профиль Отправить личное сообщение для Елё Посетить домашнюю страницу Елё Найти все сообщения от Елё
  № 6  
Елё
 
Аватар для Елё

Регистрация: Jun 2002
Адрес: Москва
Сообщений: 287
Отправить сообщение для Елё с помощью Skype™
Вот так лучшее распределение:
Код:
function shuffle(suxx) {
  var len = suxx.length;
  j = len;
  for (var i=0; i<len; i++) {
    var index = random(j);
    suxx.push(suxx[index]);
    suxx.splice(index,1);
	j--;
  }
}

Старый 02.07.2004, 00:30
Nucer вне форума Посмотреть профиль Отправить личное сообщение для Nucer Посетить домашнюю страницу Nucer Найти все сообщения от Nucer
  № 7  
Nucer
[++]
 
Аватар для Nucer

Регистрация: Jan 2003
Адрес: Москва
Сообщений: 839
Отправить сообщение для Nucer с помощью ICQ
2 Елё ещё наверное надо
Код:
fsort = function ()
{
	return random( 2 ) - 1;
}

Старый 02.07.2004, 01:21
Елё вне форума Посмотреть профиль Отправить личное сообщение для Елё Посетить домашнюю страницу Елё Найти все сообщения от Елё
  № 8  
Елё
 
Аватар для Елё

Регистрация: Jun 2002
Адрес: Москва
Сообщений: 287
Отправить сообщение для Елё с помощью Skype™
не, с -1 вообще не работает

надо наверное хелп посмотреть ;-)

Старый 02.07.2004, 02:37
  № 9  
netCat
Guest

Сообщений: n/a
По умолчанию БОЛЬШОЕ СПОСИБО ВСЕМ ВСЕМ ВСЕМ

вы меня реально спасли

заказчик торопир
начальник дергается
а меня на простой задаче заклинило


P.S.
не надо так много о массивах думать, а то как меня заклинит ^_^

Старый 02.07.2004, 02:39
  № 10  
netCat
Guest

Сообщений: n/a
спасибо то есть

Создать новую тему   Часовой пояс GMT +4, время: 19:53.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 19:53.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.