Example #1
0
        public void Next()
        {
            Thread.CurrentThread.CurrentCulture = Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture;

            var rnd = new MT19937(852456);

            var actual = new int[100];

            for (var i = 0; i < 100; ++i)
            {
                actual[i] = rnd.Next();
                Console.Write("{0}, ", actual[i]);
                if (i % 10 == 9)
                {
                    Console.WriteLine();
                }
            }

            Assert.Equal(new int[]
            {
                -1016690674, -1637870728, -692783469, -323248999, -1533665771, -1800427152, 1662001996, 2084386684, -757433287, 120032001,
                -1705096166, -1591729151, 1623952413, -785304155, 1108132845, 834940583, -1061792856, 1292875383, 1530193206, -958834311,
                -521422406, -1476584847, 1644928184, 1260721938, -759842211, -299687162, -1378585833, 439242734, -1387971947, -1811371473,
                -1985714671, -1068376625, -483596985, -1378429075, -2094662442, -1881951118, -2078293020, -1151429745, 2018416447, 1893879858,
                1326341598, -87012482, 327821473, -1207695435, 235559859, 2134760270, -1323840169, 1267399315, 531294005, -786136418,
                -453675209, 150317649, -1794148827, -1948085738, -1255531484, -1764054824, 767062180, 401275128, -1732525675, 1339059654,
                52391037, 1805419262, 1510642622, -1869031373, 1921352644, 1081859104, -1066381150, -1383572376, -251843853, 202259689,
                -1714270235, -1892268470, -1011817250, 1412463953, 220111516, -1565265572, 576040432, -420655050, -196418315, -193552307,
                -196005994, 2095968849, -1782680971, -1027966515, -468055061, -377912262, 439807374, 691554137, 520414605, 2002406186,
                719115332, 986992980, 620206509, 123073363, 1440013716, 557741451, -1815315156, -1496982324, -427519681, 380279830,
            }, actual);

            rnd.Init(456321);

            for (var i = 0; i < 100; ++i)
            {
                actual[i] = rnd.Next();
                Console.Write("{0}, ", actual[i]);
                if (i % 10 == 9)
                {
                    Console.WriteLine();
                }
            }

            Assert.Equal(new int[]
            {
                1823309890, 1286026978, 1700772777, -759084818, -1939449827, -1969269924, -1324637702, 1237751839, 1579467185, -1896356529,
                -1662531782, -1290070889, -1340729546, -462290590, 1893630519, 883728674, 817296192, -355085204, 1134931239, 1948959821,
                -564395120, -2099114907, 42843971, 478456745, 1761551733, -1914916423, 1044512791, 1455306705, -946573955, -728202319,
                1294804702, -1632067386, -186955106, 1032025171, -1373329726, 1691086447, 864646121, 1575177187, -1100242554, -874273313,
                1445571059, -1557846233, 626484120, -237187437, -888254806, -1897784757, -898232603, -78541345, -1069259125, -1336913358,
                -647024102, -940540444, 1392542934, -714307271, 523185203, -1169442940, -314834783, -124191978, 928627036, 180896026,
                -882290420, 28937894, -847412374, -597367692, 1166787309, 2034421376, 1224967835, 157701398, 1421075282, -2007011874,
                2009755335, 257512274, -111371144, 1646144901, 1911530226, -1144353162, 149005087, 917397968, -157892715, 917308110,
                -835347687, -1916905346, 2068358733, -83070125, 1597863186, -1886652522, 126063062, -1220114000, 81072986, 126356288,
                876814749, -745490213, 1334729031, 323609085, -1118853331, -1672600046, 89372839, -1890792525, 255461946, -195118879,
            }, actual);
        }
Example #2
0
        public void NextDouble()
        {
            Thread.CurrentThread.CurrentCulture = Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture;

            var rnd = new MT19937(123456);

            var actual = new double[100];

            for (var i = 0; i < 100; ++i)
            {
                actual[i] = Math.Round(rnd.NextDouble(), 6);
            }

            Assert.Equal(new double[]
            {
                0.898029, 0.654526, 0.304360, 0.724096, 0.692163, 0.762186, 0.017384, 0.863317, 0.440578, 0.327692,
                0.157624, 0.194010, 0.487429, 0.230038, 0.440785, 0.810590, 0.563060, 0.092952, 0.530282, 0.854167,
                0.228575, 0.763807, 0.606799, 0.026897, 0.658474, 0.866361, 0.106265, 0.446750, 0.367851, 0.505000,
                0.869097, 0.519178, 0.874243, 0.163699, 0.186622, 0.550845, 0.189079, 0.020268, 0.916089, 0.573960,
                0.414645, 0.906261, 0.182299, 0.434931, 0.633394, 0.905933, 0.324769, 0.126503, 0.917170, 0.493531,
                0.426479, 0.942722, 0.269054, 0.948500, 0.972566, 0.371763, 0.840350, 0.962808, 0.052126, 0.302453,
                0.736815, 0.691647, 0.519616, 0.720329, 0.804298, 0.270261, 0.979788, 0.118823, 0.864857, 0.918150,
                0.335647, 0.970717, 0.268570, 0.182163, 0.296486, 0.638157, 0.901131, 0.651100, 0.886426, 0.379444,
                0.853851, 0.601951, 0.085475, 0.255315, 0.017430, 0.312999, 0.032936, 0.095106, 0.816612, 0.373813,
                0.143905, 0.007874, 0.419690, 0.280102, 0.348921, 0.098547, 0.719365, 0.117563, 0.938149, 0.935187,
            }, actual);

            rnd.Init(951753);

            for (var i = 0; i < 100; ++i)
            {
                actual[i] = Math.Round(rnd.NextDouble(), 6);
            }

            Assert.Equal(new double[]
            {
                0.164258, 0.362222, 0.476577, 0.368516, 0.270835, 0.938640, 0.482388, 0.033788, 0.581499, 0.483967,
                0.112844, 0.315118, 0.693525, 0.593817, 0.122376, 0.352409, 0.139571, 0.435325, 0.156437, 0.434273,
                0.309665, 0.963321, 0.210233, 0.695153, 0.893191, 0.226208, 0.888139, 0.983691, 0.347230, 0.628064,
                0.825325, 0.904256, 0.953110, 0.734535, 0.170423, 0.334555, 0.841246, 0.730140, 0.788088, 0.000813,
                0.502416, 0.320501, 0.187989, 0.802559, 0.326378, 0.886604, 0.421912, 0.258907, 0.771110, 0.266313,
                0.188474, 0.865032, 0.830199, 0.735948, 0.045387, 0.608558, 0.266344, 0.878086, 0.296003, 0.954960,
                0.840953, 0.834262, 0.784732, 0.560700, 0.337408, 0.438021, 0.205282, 0.390405, 0.395393, 0.895767,
                0.176438, 0.163167, 0.182486, 0.870010, 0.591199, 0.131195, 0.742142, 0.799884, 0.432466, 0.359904,
                0.641052, 0.527554, 0.406604, 0.792959, 0.908348, 0.594474, 0.939199, 0.123638, 0.804795, 0.720115,
                0.345518, 0.909825, 0.518950, 0.429536, 0.059868, 0.943975, 0.283047, 0.918471, 0.280611, 0.982255,
            }, actual);
        }