Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Случайное число с исключением (http://www.flasher.ru/forum/showthread.php?t=174559)

in4core 31.01.2012 00:50

ну работать то будет ясное дело ) но это определенно глубоко и мрачно :D

firuz 31.01.2012 01:07

ну почму же мрачно? рекурсия - это класс :) :)

i.o. 31.01.2012 11:16

Цитата:

Сообщение от firuz (Сообщение 1060155)
ну почму же мрачно? рекурсия - это класс :) :)

Не считаю в данном случае необходимым использование рекурсии. Это медленнее, чем обычный цикл.

Добавлено через 17 минут
И использование Math.round:
Код AS3:

var ran:Number = Math.round(Math.random() * (_max - _min)) + _min;

неуместно. Тут должен быть Math.floor (раз результат приводится к Number). И нужно добавить единичку к (_max - _min), так уж повелось в данной теме, что результат может быть равен _max.

firuz 31.01.2012 12:28

Цитата:

Не считаю в данном случае необходимым использование рекурсии. Это медленнее, чем обычный цикл.
Согласен, это медленнее. Но всегда существует тонкая грань между скоростью работы и изящностью кода. И издеваться над собой ради скорости выполнения в местах, где это совершенно и не обязательно я не вижу смысла. Следовательно предложил и такой вариант.

По поводу Math.floor. Зачем? Так он как раз и не вернет вам max. И при чем тут Number. Результатом и round'a и floor'a является Number. Объясните, может я не понимаю и уперся как баран :)
Ну а по поводу единички. Это понятно, если floor, то да, для максимума нужна единичка.Но этот вариант и так возвращает все от _min до _max включительно и без того :)

Код:

Случайное число  10
Случайное число  9
Выбросить  3
Случайное число  1
Случайное число  8
Случайное число  7
Выбросить  3
Случайное число  7
Случайное число  7
Случайное число  8
Случайное число  7
Случайное число  4
Случайное число  0
Случайное число  6

И если уж на то пошло :) round быстрее :):)

iNils 31.01.2012 12:54

Цитата:

Сообщение от firuz (Сообщение 1060208)
Согласен, это медленнее. Но всегда существует тонкая грань между скоростью работы и изящностью кода.

Тут изящностью и не пахнет, а напоминает обычную заплатку.

GBee 31.01.2012 12:54

То есть отрезать циферки после запятой медленнее, чем найти ближайшее целое?
И если уж на то пошло int быстрее.

firuz 31.01.2012 13:32

ну ладно. как хотите.
по поводу заплатки и изящности все же не совсем согласен.

когда-то читал статью про рекурсивные функции и их применение. Хорошая статья была.
Но это мнение всего одного.
Ну ок.

Всем спасибо и удачи.

iNils 31.01.2012 13:57

Цитата:

Сообщение от firuz (Сообщение 1060226)
ну ладно. как хотите.
по поводу заплатки и изящности все же не совсем согласен.

Не надо делать нам одолжение :)
Заплатка, потому что:
А) Вместо одного четкого решения, которое здесь возможно, вы предлагаете делать наугад - "А вдруг повезет и число не будет запретным. Черт! Ну ладно, давайте еще раз попробуем."
Б) Если уж и делать с повторами, то рекурсия здесь просто урод на фоне while. Который, кстати, был предложен в самом первом ответе.

PS. Мне больше нравится вариант с массивом. По сути, выбор кроме одного числа, это частный случай выбора среди произвольного набора чисел. И вариант с массивом позволяет легко к нему перейти.

firuz 31.01.2012 14:05

Цитата:

PS. Мне больше нравится вариант с массивом. По сути, выбор кроме одного числа, это частный случай выбора среди произвольного набора чисел. И вариант с массивом позволяет легко к нему перейти.
Вот тут с вами соглашусь. Тоже думал, что если чисел будет несколько, то вариант с рекурсией совсем уж ударит в грязь лицом. А с массивами действительно будет лучше.

P.S. одолжения? о чем это вы? :):)

in4core 31.01.2012 14:52

Код AS3:

ну почму же мрачно? рекурсия - это класс

Ну так Кузя с универа оценивал картины))) И я имел ввиду не про рекурсию, а про запись var a = 5 , return a ) вместо return 5


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

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