добрый день, не могу понять преимущество метода NumberUtilities.random перед Math.random, в чём принципиальное отличие? подскажите, ведь оно есть, получается?... и ещё в книге написано, что следующий код неправильный:

Код AS3:
package {
import flash.display.Sprite;
import ascb.util.NumberUtilities;
public class RandomLetter extends Sprite {
public function RandomLetter() {
for(var i:Number = 0; i < 10000; i++) {
trace(getRandomLetter());
}
}
private function getRandomLetter() :String {
if(NumberUtilities.random(0, 2) == 0) {
return "A";
}
else if(NumberUtilities.random(0, 2) == 1) {
return "В";
}
else if(NumberUtilities.random(0, 2) == 2) {
return "C";
}
// Ни одно из предыдущих условий может не выполниться,
// и метод придет в эту точку без действительной строки,
return "";
}
}
>
почему "ни одно из предыдущих условий может не выполниться"? :\
далее написано, что надо загонять значение Number.Utilities в переменную, тогда будет правильно, т.е. вот так надо:

Код AS3:
package {
import flash.display.Sprite;
import ascb.util.NumberUtilities;
public class RandomLetter extends Sprite {
public function RandomLetterO {
for(var i:uint = 0; i < 10000; i++) {
trace(getRandomLetter());
}
}
private function getRandoml_etter():String {
// Перед проверкой возвращаемого из random()
// значения присваиваем его переменной,
var randomlntegenuint = NumberUtilities. random(0, 2);
if(randomInteger == 0) {
return "A";
}
else if(randomInteger == 1) {
return "B";
}
else if(randomInteger == 2) {
return "C";
}
return "";
}
}
}
я не могу разобраться в чём разница, почему первый вариант может вернуть что-то, кроме 0,1,2 ?