t/1......# Test 3 got: "0.814723691903055" (t/1.t at line 13) # Expected: "873847195.017769552" # t/1.t line 13 is: ok(0.814723691903055, $gen->rand()); # Test 4 got: "0.135477004107088" (t/1.t at line 14) # Expected: "2307073947.03889426" [snip] #### Adding a debugging printf to the C here: void mt_init_seed( struct mt *m, uint32_t seed ) { int i; uint32_t *mt; mt = m->mt; mt[0] = seed & 0xffffffff; for ( i = 1; i < N; i++ ) { mt[i] = 1812433253 * (mt[i-1]^(mt[i-1]>>30)) + i; printf("init %d: %u\n", i, mt[i]); // what we want } m->mti = N; } and running $ perl -MMath::Random::MT -e "Math::Random::MT->new(1)" > out #### sub mt_init_seed { my ($self, $seed) = @_; my @mt; $mt[0] = $seed & 0xffffffff; for ( my $i = 1; $i < $N; $i++ ) { my $xor = $mt[$i-1]^($mt[$i-1]>>30); { use integer; $mt[$i] = 1812433253 * $xor + $i; $mt[$i] >>= 32 if $mt[$i] > 0xffffffff } printf("init %d: %u\n", $i, $mt[$i]); } $self->{mt} = \@mt; $self->{mti} = $N; } and running perl -MMath::Random::MT::Perl -e "Math::Random::MT::Perl->new(1)" > outp #### init 1: 1812433254 init 2: 3713160357 init 3: 3109174145 init 4: 64984499 init 5: 3392658084 init 6: 446538473 init 7: 2629760756 init 8: 2453345558 init 9: 1394803949 init 10: 1021787430 init 11: 2063496713 init 12: 1304877364 init 13: 1713639158 init 14: 889001601 init 15: 1651239412 init 16: 1450863289 init 17: 745575081 init 18: 361057727 init 19: 2288771950 init 20: 1463387568 init 21: 2249488362 init 22: 26637982 init 23: 204036717 init 24: 1655702041 init 25: 1329048465 init 26: 2092351466 init 27: 1681619666 init 28: 3220660315 init 29: 1301783610 init 30: 626286181 init 31: 294669048 init 32: 3537128440 init 33: 3259518248 init 34: 2550101273 init 35: 1160881866 init 36: 308703547 init 37: 295714668 init 38: 35508674 init 39: 1599247281 init 40: 376272024 init 41: 3166459937 init 42: 1852735737 init 43: 3680868867 init 44: 612352556 init 45: 2760189833 init 46: 3816750341 init 47: 699140493 init 48: 1087846865 init 49: 394927937 init 50: 2063539671 init 51: 645417889 init 52: 2337669049 init 53: 3773167612 init 54: 678121169 init 55: 3006984620 init 56: 1163491294 init 57: 2559287860 init 58: 543155592 init 59: 3194181347 init 60: 2463543297 init 61: 3875146860 init 62: 475483913 init 63: 3707568076 init 64: 3881808875 init 65: 1264657097 init 66: 208126250 init 67: 1802809301 init 68: 367907560 init 69: 2433375693 init 70: 2851326449 init 71: 2380707878 init 72: 2911758972 init 73: 4243386879 init 74: 2229228726 init 75: 828161871 init 76: 2871116151 init 77: 990638198 init 78: 178193628 init 79: 1012573979 init 80: 1223581943 init 81: 3333023583 init 82: 1901888414 init 83: 3913876750 init 84: 3168662389 init 85: 656194888 init 86: 1553610174 init 87: 466840498 init 88: 686407570 init 89: 280737523 init 90: 2476489017 init 91: 1272981410 init 92: 3189431979 init 93: 3294710282 init 94: 1564477163 init 95: 4133221553 init 96: 823708826 init 97: 880616227 init 98: 1730254897 init 99: 335723347 init 100: 2123911971 init 101: 344194767 init 102: 119099153 init 103: 2915257116 init 104: 3339825470 init 105: 2524942970 init 106: 1191117250 init 107: 3403812186 init 108: 3988972937 init 109: 2575395295 init 110: 4072737183 init 111: 663832315 init 112: 808080503 init 113: 724042340 init 114: 2966189542 init 115: 2499643239 init 116: 3309205581 init 117: 1915303227 init 118: 72616536 init 119: 387525935 init 120: 2791701251 init 121: 2190905566 init 122: 3740328774 init 123: 831297460 init 124: 3750964864 init 125: 2190112044 init 126: 899144100 init 127: 2346558003 init 128: 3851695829 init 129: 2896963823 init 130: 1548614403 init 131: 3676707405 init 132: 2050891594 init 133: 4165893148 init 134: 1883017153 init 135: 2668787527 init 136: 50330561 init 137: 2063572142 init 138: 1853585557 init 139: 1716111087 init 140: 2937248370 init 141: 1650859709 init 142: 2682305722 init 143: 565243175 init 144: 3922227187 init 145: 3482032705 init 146: 2809081500 init 147: 2099376873 init 148: 230358556 init 149: 1065827745 init 150: 196966939 init 151: 3268845630 init 152: 3625508265 init 153: 1477799595 init 154: 4149453740 init 155: 2757835686 init 156: 3032697936 init 157: 2200108791 init 158: 3421680711 init 159: 4145382259 init 160: 3605253072 init 161: 1186485728 init 162: 3520482151 init 163: 3080733463 init 164: 3887314157 init 165: 4030447755 init 166: 1699987022 init 167: 1393253586 init 168: 1710066407 init 169: 710337383 init 170: 3754612557 init 171: 2741088369 init 172: 337455371 init 173: 1304761604 init 174: 3592681639 init 175: 3099385187 init 176: 4003676405 init 177: 317081535 init 178: 997754381 init 179: 480565460 init 180: 3806265432 init 181: 1068029852 init 182: 776179010 init 183: 470617537 init 184: 3653875421 init 185: 2273571919 init 186: 1055365147 init 187: 1317172834 init 188: 3414733003 init 189: 2835400613 init 190: 28845217 init 191: 631741764 init 192: 2334552212 init 193: 3565466095 init 194: 1225096926 init 195: 1277781438 init 196: 2416008223 init 197: 1268768054 init 198: 2750789241 init 199: 267768398 init 200: 2175383438 init 201: 268654341 init 202: 2550530755 init 203: 2971623408 init 204: 1666669894 init 205: 1934871760 init 206: 509782083 init 207: 2798468670 init 208: 2834016892 init 209: 2494149255 init 210: 1965005899 init 211: 2653045765 init 212: 2317194903 init 213: 1297426078 init 214: 916214929 init 215: 2967861004 init 216: 2236807006 init 217: 2476725285 init 218: 128488253 init 219: 4277714156 init 220: 3016192551 init 221: 1690883702 init 222: 1329810641 init 223: 593010415 init 224: 2341313579 init 225: 1754238478 init 226: 1242698701 init 227: 2152594527 init 228: 2103269013 init 229: 926178633 init 230: 647225267 init 231: 4243787142 init 232: 1489208161 init 233: 3188798921 init 234: 1327553793 init 235: 3644600811 init 236: 684513652 init 237: 2606555057 init 238: 2705329549 init 239: 2557469018 init 240: 1294205096 init 241: 70104222 init 242: 3020083528 init 243: 2015571237 init 244: 2768573480 init 245: 401698695 init 246: 2812362809 init 247: 328919870 init 248: 984940142 init 249: 1653817439 init 250: 471643152 init 251: 538942283 init 252: 2040555667 init 253: 1211982999 init 254: 1663497772 init 255: 2941793728 init 256: 3001026698 init 257: 313271977 init 258: 3644502703 init 259: 2423950047 init 260: 2629046069 init 261: 3450826936 init 262: 44600781 init 263: 2633869288 init 264: 4267014746 init 265: 4204914470 init 266: 1955987363 init 267: 2590608885 init 268: 2120168063 init 269: 1460034243 init 270: 258056600 init 271: 3693550087 init 272: 779446436 init 273: 902696389 init 274: 4228701387 init 275: 3165791227 init 276: 3478614865 init 277: 1500865135 init 278: 905884796 init 279: 3682046467 init 280: 2437847832 init 281: 2595888219 init 282: 4144484663 init 283: 1299603103 init 284: 648536946 init 285: 1762836247 init 286: 4265749196 init 287: 950840266 init 288: 2928992722 init 289: 2051369009 init 290: 2071186450 init 291: 1164619682 init 292: 210405235 init 293: 1296628868 init 294: 2425474719 init 295: 4083386904 init 296: 1978331343 init 297: 3190898799 init 298: 602128683 init 299: 2003319330 init 300: 1043377147 init 301: 756690484 init 302: 24776626 init 303: 1835824233 init 304: 1156421176 init 305: 2125448878 init 306: 1333136189 init 307: 607751135 init 308: 4255614767 init 309: 4238533009 init 310: 2583175632 init 311: 230472465 init 312: 3037259757 init 313: 1546348932 init 314: 2537279411 init 315: 110471952 init 316: 520621708 init 317: 63613561 init 318: 2843673595 init 319: 775036 init 320: 1899744556 init 321: 1168115970 init 322: 2685086321 init 323: 3410250658 init 324: 3151102153 init 325: 634647644 init 326: 3639125394 init 327: 3344624764 init 328: 1525171811 init 329: 1878800371 init 330: 3356530116 init 331: 3676542926 init 332: 602053165 init 333: 2686708238 init 334: 3703555082 init 335: 3754961372 init 336: 3970030923 init 337: 1749014201 init 338: 3391107050 init 339: 2478152000 init 340: 2121779806 init 341: 2636689360 init 342: 769835312 init 343: 4230539591 init 344: 1909812524 init 345: 417081626 init 346: 3096519324 init 347: 387659697 init 348: 3764499249 init 349: 3452925463 init 350: 3818277698 init 351: 3008920324 init 352: 15253694 init 353: 1479260759 init 354: 2421328720 init 355: 2220743357 init 356: 38831551 init 357: 1032912064 init 358: 3400956198 init 359: 2362808832 init 360: 3988706866 init 361: 1950464958 init 362: 3248573125 init 363: 1225815945 init 364: 1211036180 init 365: 346407094 init 366: 3867176764 init 367: 1257086026 init 368: 2725236231 init 369: 2843735658 init 370: 4147241082 init 371: 1729974832 init 372: 1256499145 init 373: 3765975901 init 374: 784776076 init 375: 4288277427 init 376: 3903532520 init 377: 3431522864 init 378: 2792589977 init 379: 2935989154 init 380: 3536596892 init 381: 3512984120 init 382: 605476293 init 383: 1774961976 init 384: 981422589 init 385: 822525778 init 386: 3343539932 init 387: 422954622 init 388: 1323482938 init 389: 2523465420 init 390: 2746609356 init 391: 1664448205 init 392: 272567300 init 393: 711582493 init 394: 3625722107 init 395: 3615865699 init 396: 950619756 init 397: 2864168489 init 398: 108006277 init 399: 3976313352 init 400: 680217319 init 401: 173747636 init 402: 291134870 init 403: 198587329 init 404: 595310009 init 405: 941470866 init 406: 2438488368 init 407: 1681923153 init 408: 1654783272 init 409: 3531789254 init 410: 4149541715 init 411: 2922706987 init 412: 684907209 init 413: 3116688362 init 414: 3288142886 init 415: 3953377592 init 416: 3332428007 init 417: 1400401813 init 418: 3745921798 init 419: 1701705628 init 420: 3744511893 init 421: 1838265811 init 422: 3314032512 init 423: 3894840150 init 424: 3810031409 init 425: 181324387 init 426: 983160249 init 427: 1444959400 init 428: 3836664153 init 429: 3032673327 init 430: 310789231 init 431: 3701565562 init 432: 1407580781 init 433: 2511575629 init 434: 3113822685 init 435: 1777261998 init 436: 2208898751 init 437: 106383174 init 438: 2961020500 init 439: 995776421 init 440: 3306087121 init 441: 2181030035 init 442: 2300064751 init 443: 1909543740 init 444: 4023156173 init 445: 1671619075 init 446: 2151956104 init 447: 237668401 init 448: 3204511253 init 449: 1303668692 init 450: 3868259787 init 451: 2737897899 init 452: 4091026033 init 453: 2877780671 init 454: 134376279 init 455: 398912026 init 456: 863520778 init 457: 3712468923 init 458: 3443213666 init 459: 2183809552 init 460: 2597379302 init 461: 349776833 init 462: 274697715 init 463: 4266593710 init 464: 4282186769 init 465: 3530757867 init 466: 520237914 init 467: 3369037397 init 468: 2285670338 init 469: 387086485 init 470: 618942879 init 471: 219892882 init 472: 2008897906 init 473: 2293749560 init 474: 2907436476 init 475: 3853296593 init 476: 327550390 init 477: 1558751403 init 478: 2125694704 init 479: 1822570484 init 480: 2409968265 init 481: 436622776 init 482: 2691124090 init 483: 1080819771 init 484: 2958107334 init 485: 2667158841 init 486: 2117901613 init 487: 440045635 init 488: 3861104471 init 489: 3574962701 init 490: 3210299248 init 491: 1368601573 init 492: 2434039520 init 493: 86704919 init 494: 3628108033 init 495: 1909858745 init 496: 227461000 init 497: 2530509465 init 498: 838433817 init 499: 730224848 init 500: 1060658180 init 501: 1318482825 init 502: 233266846 init 503: 2352800845 init 504: 2086493219 init 505: 3826355555 init 506: 3174377690 init 507: 1455208243 init 508: 1356597942 init 509: 663563056 init 510: 2501819374 init 511: 4213535259 init 512: 1585241464 init 513: 873997246 init 514: 2597898744 init 515: 427064229 init 516: 1587746589 init 517: 259660817 init 518: 1688808891 init 519: 4165834345 init 520: 1359025114 init 521: 2013923952 init 522: 2963511711 init 523: 2903220732 init 524: 356112706 init 525: 501549847 init 526: 1609412897 init 527: 1685128111 init 528: 2639303606 init 529: 700554261 init 530: 914150235 init 531: 2010650618 init 532: 2029243163 init 533: 3046509911 init 534: 715702687 init 535: 2206956754 init 536: 3045298216 init 537: 2922667179 init 538: 2497577415 init 539: 3001819604 init 540: 706666890 init 541: 2275923855 init 542: 3094184383 init 543: 2781697712 init 544: 3292952666 init 545: 4238614078 init 546: 278500659 init 547: 1440033346 init 548: 1552714131 init 549: 336554687 init 550: 2842580609 init 551: 2255044310 init 552: 2180071372 init 553: 99970159 init 554: 2078552309 init 555: 1172694639 init 556: 1359399314 init 557: 546452524 init 558: 349053834 init 559: 3072254369 init 560: 3043246719 init 561: 3314426498 init 562: 1594992663 init 563: 3582269665 init 564: 2114045278 init 565: 585873328 init 566: 840739494 init 567: 3475778485 init 568: 1506518790 init 569: 4008486652 init 570: 229989333 init 571: 3582278212 init 572: 363921215 init 573: 3592842520 init 574: 1833533669 init 575: 708173875 init 576: 564248927 init 577: 853943228 init 578: 2282731374 init 579: 2874158047 init 580: 3978663285 init 581: 2332696531 init 582: 1354524859 init 583: 58121641 init 584: 1445193461 init 585: 1936635021 init 586: 3374328198 init 587: 3465253060 init 588: 385589199 init 589: 1819596280 init 590: 912895627 init 591: 1877426726 init 592: 733280947 init 593: 2004202992 init 594: 3311780711 init 595: 3732053191 init 596: 309903272 init 597: 97290141 init 598: 2945419335 init 599: 3916477072 init 600: 1326195031 init 601: 3740938055 init 602: 3604745262 init 603: 3633308956 init 604: 3392929431 init 605: 1257547457 init 606: 251825182 init 607: 3318700085 init 608: 847033774 init 609: 137350663 init 610: 1716455973 init 611: 546850455 init 612: 4227574519 init 613: 3044214953 init 614: 2259874013 init 615: 2442748258 init 616: 2956971336 init 617: 2198772379 init 618: 1269686727 init 619: 2648116105 init 620: 1339159363 init 621: 1473334647 init 622: 2386671612 init 623: 2069268389