package org.racer.utils
{
/**
* Псевдо-генератор случайных чисел.
* Получает гамму случайных чисел, и по запросу, выдает каждый последующий элемент гаммы
* Класс представляет только статические методы и не позволяет себя инстанцировать.
*
* @author Evgeny [Racer] Simonov
* @version 1.0
*/
public class TGammaRandom {
/**
* При отсутствии гаммы случайных чисел, random возвращает -1
*/
static public const RETURN_ERROR_MODE:int=0;
/**
* При отсутствии гаммы случайных чисел, random возвращает Math.random();
*/
static public const RETURN_RANDOM_MODE:int=1;
/**
* При отсутствии гаммы случайных чисел, random генерирует исключение
*/
static public const THROW_EXCEPTION_MODE:int=2;
/**
* @private
* Текущий элемент
*/
static private var __current:Number=0;
/**
* @private
* Режим реакции на ошибку в случае неустановленной гаммы случайных чисел
* true - генерируется исключение, false - в результат выдается Math.random();
*/
static private var __strict_mode:int=THROW_EXCEPTION_MODE;
/**
* Режим реакции на ошибку в случае неустановленной гаммы случайных чисел
* true - генерируется исключение, false - в результат выдается Math.random();
*/
static public function set strict_mode(value:int):void {
__strict_mode=value;
}
/**
* @private
*/
static public function get strict_mode():int {
return __strict_mode;
}
/**
* @private
* Гамма случайных чисел
*/
static private var __gamma:Array=null;
/**
* Гамма случайных чисел
*/
static public function set gamma(value:Array):void {
__gamma=value;
}
/**
* @private
*/
static public function get gamma():Array {
return __gamma;
}
/**
* Конструктор. Никогда не вызывается.
*/
public function TGammaRandom() {
throw new Error("Класс TGammaRandom инстанцировать нельзя. Все методы класса являются статическими.");
}
/**
* Возвращает значение из гаммы случайных чисел.
*
* @return Случайное значение
*/
static public function random():Number {
if ((__gamma==null)||(__gamma.length==0)) {
switch (__strict_mode) {
case RETURN_ERROR_MODE:
return -1;
break;
case RETURN_RANDOM_MODE:
return Math.random();
break;
case THROW_EXCEPTION_MODE:
throw new Error("Гамма случайных чисел не установлена, либо пуста. Невозможно возвратить случайное число.");
break;
}
}
if (__current>=__gamma.length) __current=0;
return __gamma[__current++];
}
}
}
{
/**
* Псевдо-генератор случайных чисел.
* Получает гамму случайных чисел, и по запросу, выдает каждый последующий элемент гаммы
* Класс представляет только статические методы и не позволяет себя инстанцировать.
*
* @author Evgeny [Racer] Simonov
* @version 1.0
*/
public class TGammaRandom {
/**
* При отсутствии гаммы случайных чисел, random возвращает -1
*/
static public const RETURN_ERROR_MODE:int=0;
/**
* При отсутствии гаммы случайных чисел, random возвращает Math.random();
*/
static public const RETURN_RANDOM_MODE:int=1;
/**
* При отсутствии гаммы случайных чисел, random генерирует исключение
*/
static public const THROW_EXCEPTION_MODE:int=2;
/**
* @private
* Текущий элемент
*/
static private var __current:Number=0;
/**
* @private
* Режим реакции на ошибку в случае неустановленной гаммы случайных чисел
* true - генерируется исключение, false - в результат выдается Math.random();
*/
static private var __strict_mode:int=THROW_EXCEPTION_MODE;
/**
* Режим реакции на ошибку в случае неустановленной гаммы случайных чисел
* true - генерируется исключение, false - в результат выдается Math.random();
*/
static public function set strict_mode(value:int):void {
__strict_mode=value;
}
/**
* @private
*/
static public function get strict_mode():int {
return __strict_mode;
}
/**
* @private
* Гамма случайных чисел
*/
static private var __gamma:Array=null;
/**
* Гамма случайных чисел
*/
static public function set gamma(value:Array):void {
__gamma=value;
}
/**
* @private
*/
static public function get gamma():Array {
return __gamma;
}
/**
* Конструктор. Никогда не вызывается.
*/
public function TGammaRandom() {
throw new Error("Класс TGammaRandom инстанцировать нельзя. Все методы класса являются статическими.");
}
/**
* Возвращает значение из гаммы случайных чисел.
*
* @return Случайное значение
*/
static public function random():Number {
if ((__gamma==null)||(__gamma.length==0)) {
switch (__strict_mode) {
case RETURN_ERROR_MODE:
return -1;
break;
case RETURN_RANDOM_MODE:
return Math.random();
break;
case THROW_EXCEPTION_MODE:
throw new Error("Гамма случайных чисел не установлена, либо пуста. Невозможно возвратить случайное число.");
break;
}
}
if (__current>=__gamma.length) __current=0;
return __gamma[__current++];
}
}
}