PDA

Просмотр полной версии : книги по основам AS3. Метод NumberUtilities.random


nelco
30.09.2013, 05:32
добрый день, не могу понять преимущество метода NumberUtilities.random перед Math.random, в чём принципиальное отличие? подскажите, ведь оно есть, получается?... и ещё в книге написано, что следующий код неправильный: 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 в переменную, тогда будет правильно, т.е. вот так надо: 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 ?

caseyryan
30.09.2013, 07:50
1) NumberUtilities не относится к стандартным пакетам флеша
2) что это вообще за запись?
NumberUtilities. random@, 2);
Это вообще в принципе работать не будет. Судя по всему это какой-то кривой скан книги с корявым распознаванием. А должно быть как-то так:

NumberUtilities. random(1, 2);

Разница вероятнее всего в том, что простой Math.random() генерирует число в промежутке между 0 и 1, а этот генерирует случайное число в промежутке между первым указанным параметром, и последним, по типу rand в php

nelco
30.09.2013, 10:13
опечатку исправил, извините... и со своим вопросом тоже разобрался - в первом случае кода, действительно, может быть так, что не будет ни одного соответствия...