Garrett [?]
Не надо обижаться на ТЫкание, ибо это принято так в тырнете. На форумах сетевой этикет.
Yashied [?]
Random() возвращает равномерно распределенные числа, и площадь нормализованной ЧХ (вероятность попадания в интервал от $Min до $Max) в этом случае должна быть равна 1, т.е. ($Max - $Min) * $Hn = 1. Если $Min = $Max, то 0 * $Hn = 0, что и требовалось доказать. Получается, что при $Min = $Max вероятность не определена, и функция должна возвратить ошибку.
Да пусть возвращает ошибку, я не против, но в
@error. А в качестве результата желательно чтобы возвращала хоть что-то из переданных ей параметров, а именно то самое единственное число, которое по стечению обстоятельств оказалось в обоих аргументах.
Кому нужно рельно 100% Рандом по всем канонам, тот будет проверять @error, но в простых житейских задачах, с коими я постоянно имею дело Рандом используется для Рандомного выбора из доступных вариантов, а АвтоИт в этом случае вообще возвращает 0.
Пример:
$rnd = Random($a, $b, 1)
Select
Case $rnd = 1
;Что-то выполняется
Case $rnd = 2
;Что-то выполняется
Case $rnd = 3
;Что-то выполняется
; ит.д...
EndSelect
$a всегда как минимум равен еденице, но вот
$b, например, зависит от ввода пользователя, который абсолютно не в курсе, как работает нормализация ЧХ и прочее.
И подобных случаев у меня было не мало. Если в других функциях идут навстречу реалиям, то почему бы и здесь не пойти?
Garrett [?]
Да это так! Вопрос только почему.
Yashied как нельзя лучше объяснил, однако во многих ЯП это не так.
Потому что нет ничего идеального и все должно соответствовать реалиям и необходимости.