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

Вернуться   Форум Flasher.ru > Flasher.ru > Флейм

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 06.04.2012, 14:07
toFL вне форума Посмотреть профиль Найти все сообщения от toFL
  № 21  
Ответить с цитированием
toFL
Banned

Регистрация: May 2011
Адрес: +48° 27' 57.93", +35° 2' 46.02"
Сообщений: 447
Записей в блоге: 2
Отправить сообщение для toFL с помощью Skype™
Цитата:
А еще эта функция дает довольно некачественное распределение.
Добавь туда возврат -1,0,1 и будет тебе счастье.
Например так:
Код AS3:
public static function sortArrayByRandom(...params):int {
	return [-1,0,1][int(Math.random()*3)];
}
//...
array.sort(ArrayTool.sortArrayByRandom);


Последний раз редактировалось toFL; 06.04.2012 в 14:20.
Старый 06.04.2012, 15:25
ChuwY вне форума Посмотреть профиль Отправить личное сообщение для ChuwY Посетить домашнюю страницу ChuwY Найти все сообщения от ChuwY
  № 22  
Ответить с цитированием
ChuwY
 
Аватар для ChuwY

Регистрация: Nov 2009
Адрес: Тула / Москва
Сообщений: 734
Отправить сообщение для ChuwY с помощью ICQ Отправить сообщение для ChuwY с помощью Skype™
Ответ неверный.
http://dl.************/u/71391385/Arr...zerTestApp.swf
__________________
9 из 10 голосов в моей голове сказали наркотикам "НЕТ"
Мои ачивки: художник-паразит.


Последний раз редактировалось ChuwY; 06.04.2012 в 16:05.
Старый 06.04.2012, 15:45
toFL вне форума Посмотреть профиль Найти все сообщения от toFL
  № 23  
Ответить с цитированием
toFL
Banned

Регистрация: May 2011
Адрес: +48° 27' 57.93", +35° 2' 46.02"
Сообщений: 447
Записей в блоге: 2
Отправить сообщение для toFL с помощью Skype™
Цитата:
Ответ неверный.
Шо? Ссылка не работает.

Старый 06.04.2012, 16:05
ChuwY вне форума Посмотреть профиль Отправить личное сообщение для ChuwY Посетить домашнюю страницу ChuwY Найти все сообщения от ChuwY
  № 24  
Ответить с цитированием
ChuwY
 
Аватар для ChuwY

Регистрация: Nov 2009
Адрес: Тула / Москва
Сообщений: 734
Отправить сообщение для ChuwY с помощью ICQ Отправить сообщение для ChuwY с помощью Skype™
фикс.
__________________
9 из 10 голосов в моей голове сказали наркотикам "НЕТ"
Мои ачивки: художник-паразит.

Старый 06.04.2012, 16:39
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 25  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Кстати, а с чего вы решили, что если вставить рандом в функцию сортировки, то он вам равномерно перемешает массив? Ну т.е. почему у каждого эл-та с номером i шанс попасть на место j одинаковый?
Почему блин по нему просто не пройтись подряд и текущий эл-т поменять местами с рандомным?
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

Старый 06.04.2012, 16:50
toFL вне форума Посмотреть профиль Найти все сообщения от toFL
  № 26  
Ответить с цитированием
toFL
Banned

Регистрация: May 2011
Адрес: +48° 27' 57.93", +35° 2' 46.02"
Сообщений: 447
Записей в блоге: 2
Отправить сообщение для toFL с помощью Skype™
Цитата:
фикс.
Исходники в студию.

Старый 06.04.2012, 17:03
ChuwY вне форума Посмотреть профиль Отправить личное сообщение для ChuwY Посетить домашнюю страницу ChuwY Найти все сообщения от ChuwY
  № 27  
Ответить с цитированием
ChuwY
 
Аватар для ChuwY

Регистрация: Nov 2009
Адрес: Тула / Москва
Сообщений: 734
Отправить сообщение для ChuwY с помощью ICQ Отправить сообщение для ChuwY с помощью Skype™
Исходники в студии
__________________
9 из 10 голосов в моей голове сказали наркотикам "НЕТ"
Мои ачивки: художник-паразит.

Старый 07.04.2012, 13:59
MikroAcse вне форума Посмотреть профиль Отправить личное сообщение для MikroAcse Найти все сообщения от MikroAcse
  № 28  
Ответить с цитированием
MikroAcse
 
Аватар для MikroAcse

Регистрация: Feb 2012
Сообщений: 1,540
Так какая сортировка лучше?
1)
Код AS3:
public static function sortArrayByRandom(array:Array):Array {
	var arrayToRandom:Array=array;
	for (var i:uint = 0; i < arrayToRandom.length; i++) {
		var randomNumber:uint=int(Math.random()*arrayToRandom.length);
		arrayToRandom.push( arrayToRandom.splice( randomNumber, 1 )[0] );
	}
	return arrayToRandom;
}
2)
Код AS3:
public static function sortArrayByRandom(array:Array):Array {
	function run (a:*, b:*) {return Math.random() > 0.5 ? -1 : 1;}
	return array.sort(run);
}
3)
Код AS3:
public static function sortArrayByRandom(...params):int {
	return [-1,0,1][int(Math.random()*3)];
}
//...
array.sort(ArrayTool.sortArrayByRandom);
4)
Код AS3:
private var _currentArray : Array;
		public function FisherYatesRandomizer() {
		}
 
		public function getDescription():String{
			return "Алгоритм Фишера-Йетса. Классический алгоритм для перемешивания массива. Довольно быстр и дает весьма приличное распределение";
		}
 
		public function randomize(argArray : Array) : Array {
			if(!argArray){
				return null;
			}
			_currentArray = argArray.slice();
 
			startRandomize();
 
			return _currentArray;
		}
 
		// private 
		private function startRandomize():void{
			var len : uint = _currentArray.length;
			while(len--){
				var n : int = Math.random()*(len + 1);
				swap(len, n);
			}
			return ;
		}
 
		private function swap(x : uint, y : uint):void{
			var temp : * = _currentArray[x];
			_currentArray[x] = _currentArray[y];
			_currentArray[y] = temp;
		}
Добавлено через 11 минут
По тестам ChuwY я понял, что самый лучший и быстрый - FisherYatesRandomizer.

Старый 07.04.2012, 14:16
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 29  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
В этом вашем FisherYatesRandomizer надо вместо len + 1 просто len и n неплохо бы uint сделать.
UPD: нет, с len всё нормально, см. ниже почему.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.


Последний раз редактировалось -De-; 08.04.2012 в 00:09.
Старый 07.04.2012, 14:21
MikroAcse вне форума Посмотреть профиль Отправить личное сообщение для MikroAcse Найти все сообщения от MikroAcse
  № 30  
Ответить с цитированием
MikroAcse
 
Аватар для MikroAcse

Регистрация: Feb 2012
Сообщений: 1,540
Цитата:
В этом вашем FisherYatesRandomizer надо вместо len + 1 просто len и n неплохо бы uint сделать.
Спасибо.

Добавлено через 3 минуты
Обновил библиотеку и документацию:
Скачать.
Теперь она не находится в состоянии TEST.

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

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

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


 


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


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