home *** CD-ROM | disk | FTP | other *** search
/ 404 Jogos / CLJG.iso / Puzzle / HexiomConnect.swf / scripts / RandomNumber.as < prev    next >
Text File  |  2008-08-29  |  2KB  |  69 lines

  1. package
  2. {
  3.    public class RandomNumber
  4.    {
  5.       
  6.       private static var MT:Array = new Array();
  7.       
  8.       private static var currentIndex:int = 0;
  9.        
  10.       
  11.       public function RandomNumber()
  12.       {
  13.          super();
  14.       }
  15.       
  16.       public static function initialize(param1:int) : void
  17.       {
  18.          MT[0] = param1;
  19.          var _loc2_:int = 1;
  20.          while(_loc2_ < 624)
  21.          {
  22.             MT[_loc2_] = 1812433253 * (MT[_loc2_ - 1] ^ MT[_loc2_ - 1] >> 30) + _loc2_;
  23.             _loc2_++;
  24.          }
  25.          generateNumbers();
  26.       }
  27.       
  28.       public static function random() : Number
  29.       {
  30.          var _loc1_:int = extractNumber(currentIndex);
  31.          ++currentIndex;
  32.          if(currentIndex >= 624)
  33.          {
  34.             generateNumbers();
  35.          }
  36.          return _loc1_ / int.MAX_VALUE;
  37.       }
  38.       
  39.       private static function generateNumbers() : void
  40.       {
  41.          var _loc2_:int = 0;
  42.          var _loc1_:int = 0;
  43.          while(_loc1_ < 624)
  44.          {
  45.             _loc2_ = (MT[_loc1_] & 1) + (MT[(_loc1_ + 1) % 624] & 2147483647);
  46.             if(_loc2_ % 2 == 0)
  47.             {
  48.                MT[_loc1_] = MT[(_loc1_ + 397) % 624] ^ _loc2_ >> 1;
  49.             }
  50.             else
  51.             {
  52.                MT[_loc1_] = MT[(_loc1_ + 397) % 624] ^ _loc2_ >> 1 ^ 2567483615;
  53.             }
  54.             _loc1_++;
  55.          }
  56.          currentIndex = 0;
  57.       }
  58.       
  59.       private static function extractNumber(param1:int) : int
  60.       {
  61.          var _loc2_:* = int(MT[param1]);
  62.          _loc2_ ^= _loc2_ >> 11;
  63.          _loc2_ ^= _loc2_ << 7 & 2636928640;
  64.          _loc2_ ^= _loc2_ << 15 & 4022730752;
  65.          return _loc2_ ^ _loc2_ >> 18;
  66.       }
  67.    }
  68. }
  69.