|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Lorem ipsum
|
Велосипед не мой:
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. |
|
|||||
Lorem ipsum
|
О чем речь?
__________________
Поймай яблоко 2! |
|
|||||
Lorem ipsum
|
А чтоб я знал. Написал же, велосипед не мой. Работает отлично, я пользуюсь.
- разброс субъективно лучше, чем в нативном; - скорость (вроде тесты делали) в разы выше; - ну и самое главное — у него выдача полностью зависит от посева;
__________________
Поймай яблоко 2! |
|
|||||
Регистрация: Oct 2006
Сообщений: 2,281
|
а что за класс MyUtils?
|
|
|||||
Lorem ipsum
|
А блин )) сейчас исправлю. Нет там ничего такого.
__________________
Поймай яблоко 2! |
|
|||||
Регистрация: Mar 2007
Сообщений: 319
|
Лучший генератор это http://www.math.utah.edu/~pa/Random/Random.html
Zebestov твой вариант рандома не лучше нативного: [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. |
|
|||||
Регистрация: Oct 2006
Сообщений: 2,281
|
замерил время - вышло что самый быстрый таки родной
Цитата:
|
|
|||||
Регистрация: Mar 2007
Сообщений: 319
|
Измерять нужно в релизном плеере
при n 10000000 разница не существенна, поэтому не имеет смысла |
Часовой пояс GMT +4, время: 04:51. |
|
« Предыдущая тема | Следующая тема » |
|
|