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

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 14.01.2017, 14:45
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 11  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
Велосипед не мой:
Код AS3:
package {
public class MyRandom {
 
	private static var _seed:int = Math.random() * 123456789;
 
	public function MyRandom() {}
 
	/** Случайное число от 0 до 1 или в заданном диапазоне. */
	public static function random(max:Number = 1.0, min:Number = 0.0):Number {
		_seed = (_seed * 9301 + 49297) % 233280;
		var rnd:Number = _seed / 233280;
		return min + rnd * (max - min);
	}
 
	public static function set seed(value:int):void {
		_seed = value;
	}
}
}
__________________
Поймай яблоко 2!


Последний раз редактировалось Zebestov; 14.01.2017 в 21:25.
Старый 14.01.2017, 18:58
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 12  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
В чем прикол?
__________________
Ко мне можно и нужно обращаться на ты)

Старый 14.01.2017, 19:03
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 13  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
О чем речь?
__________________
Поймай яблоко 2!

Старый 14.01.2017, 19:34
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 14  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
О велосипеде, который ты скинул
в чем суть подобных манипуляций?
Код AS3:
_seed = (MyUtils._seed * 9301 + 49297) % 233280;
__________________
Ко мне можно и нужно обращаться на ты)

Старый 14.01.2017, 20:00
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 15  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
А чтоб я знал. Написал же, велосипед не мой. Работает отлично, я пользуюсь.
- разброс субъективно лучше, чем в нативном;
- скорость (вроде тесты делали) в разы выше;
- ну и самое главное — у него выдача полностью зависит от посева;
__________________
Поймай яблоко 2!

Старый 14.01.2017, 20:57
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 16  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,281
а что за класс MyUtils?

Старый 14.01.2017, 21:24
Zebestov вне форума Посмотреть профиль Отправить личное сообщение для Zebestov Посетить домашнюю страницу Zebestov Найти все сообщения от Zebestov
  № 17  
Ответить с цитированием
Zebestov
Lorem ipsum
 
Аватар для Zebestov

модератор форума
Регистрация: May 2001
Адрес: Одесса
Сообщений: 4,869
Записей в блоге: 4
А блин )) сейчас исправлю. Нет там ничего такого.
__________________
Поймай яблоко 2!

Старый 15.01.2017, 10:51
Nooob вне форума Посмотреть профиль Отправить личное сообщение для Nooob Найти все сообщения от Nooob
  № 18  
Ответить с цитированием
Nooob
 
Аватар для Nooob

Регистрация: Mar 2007
Сообщений: 319
Лучший генератор это http://www.math.utah.edu/~pa/Random/Random.html
Код AS3:
seed = (seed * 16807) % 0x7fffffff
Zebestov твой вариант рандома не лучше нативного:
Код AS3:
[SWF(width="400", height="400")]
	public class TestBitmap extends Sprite
	{
		public function TestBitmap()
		{
			super();
			test1();
			test2();
			test3();
		}
 
		private function test1():void
		{
			var seed:int = Math.random() * 123456789;
			function random(min:Number = 0.0, max:Number = 1.0):Number
			{
				seed = (seed * 9301 + 49297) % 233280;
				var rnd:Number = seed / 233280;
				return min + rnd * (max - min);
			}
 
			var bitmapData:BitmapData = new BitmapData(200, 200, false, 0xffffff);
			for (var i:int = 0; i < 100000; i++) 
			{
				bitmapData.setPixel(random(0, 200), random(0, 200), random(0, 0xffffff));
			}
			var bitmap:Bitmap = new Bitmap(bitmapData);
			bitmap.x = 0;
			bitmap.y = 0;
			addChild(bitmap);
		}
 
		private function test2():void
		{
			var seed:int = Math.random() * 123456789;
			function random(max:int):Number
			{
				seed = (seed * 16807) % 0x7fffffff;
				return seed % max;
			}
 
			var bitmapData:BitmapData = new BitmapData(200, 200, false, 0xffffff);
			for (var i:int = 0; i < 100000; i++) 
			{
				bitmapData.setPixel(random(200), random(200), random(0xffffff));
			}
			var bitmap:Bitmap = new Bitmap(bitmapData);
			bitmap.x = 200;
			bitmap.y = 0;
			addChild(bitmap);
		}
 
		private function test3():void
		{
			var bitmapData:BitmapData = new BitmapData(200, 200, false, 0xffffff);
			for (var i:int = 0; i < 100000; i++) 
			{
				bitmapData.setPixel(Math.random() * 200, Math.random() * 200, Math.random() * 0xffffff);
			}
			var bitmap:Bitmap = new Bitmap(bitmapData);
			bitmap.x = 0;
			bitmap.y = 200;
			addChild(bitmap);
		}
	}
Верхний слева твой, снизу слева нативный
Изображения
 


Последний раз редактировалось Nooob; 15.01.2017 в 11:13.
Старый 15.01.2017, 12:28
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 19  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,281
замерил время - вышло что самый быстрый таки родной
Цитата:
test1 112
test2 64
test3 26

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

Регистрация: Mar 2007
Сообщений: 319
Цитата:
Сообщение от undefined Посмотреть сообщение
замерил время - вышло что самый быстрый таки родной
Измерять нужно в релизном плеере
Код:
test1 810
test2 793
test3 704
при n 10000000 разница не существенна, поэтому не имеет смысла

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

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

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


 


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


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