-\r
-#include "osecpu.h"\r
-\r
-static struct {\r
- unsigned stat[4], mat1, mat2, tmat;\r
-} randStat;\r
-\r
-// tinyMTの32bit版のアルゴリズムを使っています : http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/TINYMT/index-jp.html\r
-void randStatNext()\r
-{\r
- unsigned x, y;\r
- x = (randStat.stat[0] & 0x7fffffff) ^ randStat.stat[1] ^ randStat.stat[2];\r
- y = randStat.stat[3];\r
- x ^= x << 1;\r
- y ^= (y >> 1) ^ x;\r
- randStat.stat[1] = randStat.stat[2] ^ (-((int)(y & 1)) & randStat.mat1);\r
- randStat.stat[2] = x ^ (y << 10) ^ (-((int)(y & 1)) & randStat.mat2);\r
- randStat.stat[3] = y;\r
- return;\r
-}\r
-\r
-void randStatInit(unsigned seed)\r
-{\r
- int i;\r
- randStat.stat[0] = seed;\r
- randStat.stat[1] = randStat.mat1 = 0x8f7011ee;\r
- randStat.stat[2] = randStat.mat2 = 0xfc78ff1f;\r
- randStat.stat[3] = randStat.tmat = 0x3793fdff;\r
- for (i = 1; i < 8; i++){\r
- randStat.stat[i & 3] ^= i + ((unsigned)1812433253) * (randStat.stat[(i - 1) & 3] ^ (randStat.stat[(i - 1) & 3] >> 30));\r
- }\r
- for (i = 0; i < 8; i++){\r
- randStatNext();\r
- }\r
- return;\r
-}\r
-\r
-unsigned int randGetNextUInt32(void)\r
-{\r
- //次の乱数を取得する。\r
- unsigned int u32t;\r
- \r
- randStatNext();\r
- u32t = randStat.stat[0] + (randStat.stat[2] >> 8);\r
- return (randStat.stat[3] ^ u32t ^ (-((int)(u32t & 1)) & randStat.tmat));\r
-}\r
+
+#include "osecpu.h"
+
+static struct {
+ unsigned stat[4], mat1, mat2, tmat;
+} randStat;
+
+// tinyMTの32bit版のアルゴリズムを使っています : http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/TINYMT/index-jp.html
+void randStatNext()
+{
+ unsigned x, y;
+ x = (randStat.stat[0] & 0x7fffffff) ^ randStat.stat[1] ^ randStat.stat[2];
+ y = randStat.stat[3];
+ x ^= x << 1;
+ y ^= (y >> 1) ^ x;
+ randStat.stat[1] = randStat.stat[2] ^ (-((int)(y & 1)) & randStat.mat1);
+ randStat.stat[2] = x ^ (y << 10) ^ (-((int)(y & 1)) & randStat.mat2);
+ randStat.stat[3] = y;
+ return;
+}
+
+void randStatInit(unsigned seed)
+{
+ int i;
+ randStat.stat[0] = seed;
+ randStat.stat[1] = randStat.mat1 = 0x8f7011ee;
+ randStat.stat[2] = randStat.mat2 = 0xfc78ff1f;
+ randStat.stat[3] = randStat.tmat = 0x3793fdff;
+ for (i = 1; i < 8; i++){
+ randStat.stat[i & 3] ^= i + ((unsigned)1812433253) * (randStat.stat[(i - 1) & 3] ^ (randStat.stat[(i - 1) & 3] >> 30));
+ }
+ for (i = 0; i < 8; i++){
+ randStatNext();
+ }
+ return;
+}
+
+unsigned int randGetNextUInt32(void)
+{
+ //次の乱数を取得する。
+ unsigned int u32t;
+
+ randStatNext();
+ u32t = randStat.stat[0] + (randStat.stat[2] >> 8);
+ return (randStat.stat[3] ^ u32t ^ (-((int)(u32t & 1)) & randStat.tmat));
+}