[ create a new paste ] login | about

Link: http://codepad.org/cwWsQUbZ    [ raw code | output | fork ]

programmingpraxis - C, pasted on Sep 6:
/* A C-program for MT19937: Integer version (1998/4/6)            */
/*  genrand() generates one pseudorandom unsigned integer (32bit) */
/* which is uniformly distributed among 0 to 2^32-1  for each     */
/* call. sgenrand(seed) set initial values to the working area    */
/* of 624 words. Before genrand(), sgenrand(seed) must be         */
/* called once. (seed is any 32-bit integer except for 0).        */
/*   Coded by Takuji Nishimura, considering the suggestions by    */
/* Topher Cooper and Marc Rieffel in July-Aug. 1997.   Comments   */
/* should be addressed to: matumoto@math.keio.ac.jp               */


#include<stdio.h>

/* Period parameters */  
#define N 624
#define M 397
#define MATRIX_A 0x9908b0df   /* constant vector a */
#define UPPER_MASK 0x80000000 /* most significant w-r bits */
#define LOWER_MASK 0x7fffffff /* least significant r bits */

/* Tempering parameters */   
#define TEMPERING_MASK_B 0x9d2c5680
#define TEMPERING_MASK_C 0xefc60000
#define TEMPERING_SHIFT_U(y)  (y >> 11)
#define TEMPERING_SHIFT_S(y)  (y << 7)
#define TEMPERING_SHIFT_T(y)  (y << 15)
#define TEMPERING_SHIFT_L(y)  (y >> 18)

static unsigned long mt[N]; /* the array for the state vector  */
static int mti=N+1; /* mti==N+1 means mt[N] is not initialized */

/* initializing the array with a NONZERO seed */
void
sgenrand(seed)
    unsigned long seed;	
{
    /* setting initial seeds to mt[N] using         */
    /* the generator Line 25 of Table 1 in          */
    /* [KNUTH 1981, The Art of Computer Programming */
    /*    Vol. 2 (2nd Ed.), pp102]                  */
    mt[0]= seed & 0xffffffff;
    for (mti=1; mti<N; mti++)
        mt[mti] = (69069 * mt[mti-1]) & 0xffffffff;
}

unsigned long 
genrand()
{
    unsigned long y;
    static unsigned long mag01[2]={0x0, MATRIX_A};
    /* mag01[x] = x * MATRIX_A  for x=0,1 */

    if (mti >= N) { /* generate N words at one time */
        int kk;

        if (mti == N+1)   /* if sgenrand() has not been called, */
            sgenrand(4357); /* a default initial seed is used   */

        for (kk=0;kk<N-M;kk++) {
            y = (mt[kk]&UPPER_MASK)|(mt[kk+1]&LOWER_MASK);
            mt[kk] = mt[kk+M] ^ (y >> 1) ^ mag01[y & 0x1];
        }
        for (;kk<N-1;kk++) {
            y = (mt[kk]&UPPER_MASK)|(mt[kk+1]&LOWER_MASK);
            mt[kk] = mt[kk+(M-N)] ^ (y >> 1) ^ mag01[y & 0x1];
        }
        y = (mt[N-1]&UPPER_MASK)|(mt[0]&LOWER_MASK);
        mt[N-1] = mt[M-1] ^ (y >> 1) ^ mag01[y & 0x1];

        mti = 0;
    }
  
    y = mt[mti++];
    y ^= TEMPERING_SHIFT_U(y);
    y ^= TEMPERING_SHIFT_S(y) & TEMPERING_MASK_B;
    y ^= TEMPERING_SHIFT_T(y) & TEMPERING_MASK_C;
    y ^= TEMPERING_SHIFT_L(y);

    return y; 
}

/* this main() outputs first 1000 generated numbers  */
main()
{ 
    int j;

    sgenrand(4357); /* any nonzero integer can be used as a seed */
    for (j=0; j<1000; j++) {
        printf("%10lu ", genrand());
        if (j%8==7) printf("\n");
    }
    printf("\n");
}


Output:
3510405877 4290933890 2191955339  564929546  152112058 4262624192 2687398418  268830360 
1763988213  578848526 4212814465 3596577449 4146913070  950422373 1908844540 1452005258 
3029421110  142578355 1583761762 1816660702 2530498888 1339965000 3874409922 3044234909 
1962617717 2324289180  310281170  981016607  908202274 3371937721 2244849493  675678546 
3196822098 1040470160 3059612017 3055400130 2826830282 2884538137 3090587696 2262235068 
3506294894 2080537739 1636797501 4292933080 2037904983 2465694618 1249751105   30084166 
 112252926 1333718913  880414402  334691897 3337628481   17084333 1070118630 2111543209 
1129029736 2769716594  198749844 2123740404 3372116884  667945179 1235233343 1413475797 
2355129622 3131889314 1361507145 3419810344 3753862504 2643520359  854777807 2823672895 
1563137348 2778071293 3360232580 1294979669 2667002587 4095439979  806669383 3717814038 
1071953403 3630859637  771361748 1131385020 3697612515 4264844916 1364828348 2863894246 
1109863328 3066937191 2778683115 3989613953  859474495  167522376 1094225558 1963711766 
1257324636 1729949323  125753755 1068698284 1761594045 2106609220 1033190229  946183933 
1100436279  489306665 2385045156  658699819 3308017340 2385997510  105622857 1976233741 
1535497010  314176889 1247500738 2138106664 2757078771 2433460811 3970906471 1944201130 
2366336502 2541539915 4284982935  224898482 1457988276 2188154237 3655119144  979144237 
1279857832 2711710163 4093937260 2299893420 2121869254 2505459837 1847263294 2974457633 
3439803738 1672773492  225684598 2496857387  611619631 3993022877 3508398016 1663733971 
 758566080 1653863133 1701066037 3782883361 3343813716 2602577666  629577870 3724093470 
 361301181 2674434977 1443899064 4104796692  140754167 4230942998  447458027  743917836 
2818315151 1332110941  266033703  308176090  130356650 3074197472 3093392044 1602712035 
1856287253 3375970245 3114872063  370413632 1435286098  645351481  908917276 2440368438 
1599412846 2500100729  790131292 3684521490 4052663936 1566488352  295035953 4163443199 
2997925650  678068969 3667661122 1273385972 3555794914  762012623 1091375739 1765680277 
4238179361 3406590822 3797246256  388618876 2160693563  349961032 1392360403 3579025090 
 604490212 3577823930 2321462651 3790422055 3185735941 2229660586 1128575466  884862908 
3330757128 3194168238  681073659  800341641 2006864675 2619636221 1577889182 3575155952 
2260116784 3689141878 1657848984 2642380231 2878484564 3099953080  468844464 4134363631 
4110639840 1904558184 1937194892 3137602491 3643695698  820242909 3068372731 3388748923 
4235603065 2615115373 1555770904 1520951990 1047053830 1663094463 3948465044 1077597088 
2996944317 3230974609 2019388652  865275198 2046271241 3163620630  269072378 2253440754 
 277763586 1114595358 2679817222  988885471  922982460  477046426 1161679484 2950091998 
2088879880 3516906501 1403601752 1184069822 3531029460 3041313352 3359174170 2117925252 
1529768389 1253051929 1829668776 2678766355 2138924913 3147299808  447212163 1069119222 
3791704659  804904386 3580345412 1700215583  904016717   74539975 1288558083 1746888271 
 437611701  781576281 1166365552 2566333668 4292856916 4076802480 3968908047 3057346051 
2074623641 3653637364  586217310 3211306229 2604443978 3303224219   50953535 2118693299 
 460196852 3355264342  500727351 1681849672  113995187 1200937601 3092561862  312936130 
3916083024 2561711416 3713941700 2240434908  637144400 1946468041 3224254139 2242555323 
2524984519  945834669 2805199117 1879274691 3792160120   37879558 1205870756 3508020184 
2705733735 3134213377 3170077556    9055729 2147895752 3788046325 2422273092 1228026268 
1275162816 1385450594  128490357  678715088 2466464403 2715463741  420067866  396072989 
1729810791 4146068843  389936193 1010939382  794725144  633726173 3567793282  248988111 
1254549356 1989964616 1425389196 2202358947 2830413406 3798927382 3442966168  269966252 
2807646342 1794971636 1602977220 1360381486 1805272988  554730358 4259897540 2168740091 
 442942697 3744617621 3567326073 1232342342 3720210842  303505483 3533762586 2136482547 
2813945830 3051833277 2830164695 3157472512 3186113013 1063305342 4133844231 2026873438 
  94687021   42670911 2205451721  200274097 3184342380 1216199867 1941807482 1902652464 
4140258655 1934749011 2626251395 1041046135 3256560316 2005577300  367040511 2562291571 
4179257085  394550850 3714400922 3096861476 3729796880 3528309113 1483426196  821348673 
2057501468 3141389956  631596202 2325651773 3568751628 2300178836  257777076 3455675689 
2853908813  223950412 2320715588  250378269 3557833937  927098460  315421373 1957400381 
 725633141 3345409284 1114863797 1830809043 1922707457 3785762071 3404751487 2434832700 
1359584120  860423718 2979956529  888063953  641814761  180527770 3316862637 4012959929 
  28566252 1045558574 4131606737  215968520  362234156 2248115936 3069089212 3403600809 
1812984601 1768934064 4007586160 1240758160   13887765 3514615109 3827374039 3341198715 
1982839159 2033151304 4283902822 3744190534  726223056 3905246635 1875803225 2030522753 
2822074688 3325482280 1691268105 3033866845 1716543028 1555574049 2661093496 1979855811 
2251933935 1276056752 3341241268 1892612984 2194846054  486586963 2492823590  593230942 
 775986230 1255789287 2318099602 3056263080  158332807 2451929550 3374135491  372847709 
1128359579  373993639 2419119952  829613207 2948211163 2324165819  160722663 1444930279 
 765460462 3780495422  592264489  316670611 2342138965 1439591408 3362218290 2860902653 
1116562887 3033679152 1381679779 1291533463 1962666710 2222373514 1215751045 3569236064 
1611254503 1171727980 3057484484 3263787664 3065712276  781477153 1881176626 3769042770 
1193467712 2843905090 3437666358 2160717604  419274206 2767079897 4007363510 1325555048 
4187736634 4066907010 3299749742  154249616 1941800223 1157563946  705258893  860757803 
1310317854 1898329708 3491229573  312822728 3407001878 1029352733 3463910352 2741163037 
2705583812 2644345635  683012156  948328240 2656867161 1644147624 2853875853  822059867 
 753937406 1604103884 1756360543 3400647193 2802766030 2268191056 3784643944 3009927237 
 394432056 1840177440 2651765924 1205254585 3551482241 2857937506 2522509113 3675764066 
1234994787 3459183960  186529857 1329960799 2322397450 1078548606  113242357 2421327506 
3306100881  211880652  847202265 1034020264 2374075486  755993425 2474409905 1885945103 
3588026819 3326201431  747273957 3172561912 4064603659 2036147813 3539583488 2861164857 
3303878586 2385840167  734771685  804646316 1158163327 2080435695 2455811362 2060318701 
1223319334 2573853731 3341336861 3207344772 1654544724 1227774824 1779567885 4241425455 
3942578957 2787959909   90390016 1235487669 2405269696 4096898260 2121644059 2432007152 
2649006803  355642145 3998121079 3524581383  919279000  789586853 2465492036  220701650 
2947224279 1329892616 3729919501 1219039514 3006882189  281458735 3800499491  730882493 
2222118351 4107301035 2687550208 3260886108 3701859392 3862191362 1412535194 1694757183 
 772470279  689128388 2265554314 3499902942 2845535450 2570802968 1947307958 4027367903 
1910806179 3858889779 4021735452 4078787932 3413032217 2980053565 2148809521 1497338125 
2040525958 3112062074 2201881275 3672285015 3003099464 3809697025 3709177038 3264926503 
1707537043 1104985157 3691862420 1898692192 2323051094  736562662 2300313916 3100486674 
 302436891 1288467611 1981059467 3645778636 1609399619 3418162375 3667843152  536318325 
3040655354 2544467931  424476355 1601741596  246832728 2677287644 2835422307 1127786001 
 850991343 2067806155 3766212150 1001927094 3801068881 3242308737 1560596676 1681618985 
2562998394 3484825522 2655391996 1746361319 3550836123 4038742826  735255465 3954076606 
4101370050 3167012089 1966689481 1576556523  207036082 2337346669 3404885158 3372194402 
2313772874 1511011541 3934253759  152017013 2305096656 1003233114 3788182044 2738083629 
2667318735 4075851512 3919952624 3934687504  955697805 3721361893 1892740917 1925356403 
3530645689   57355987  500963211 3812263275 3120702996 3348394440 2648242605 2950965560 
2906248872 4195607563 1976120064  569029796 3204894397  836657553 4253104557 4029524248 
1167446730 3164256694 1225943621  978942573 3887954057 4029693733 3371611138 2648127182 
 341670719  780349063 1249088385 2825987206 1409751402 3493141543 2454446995 3001899542 
 894695004 4113594037 2748119359 3811278462  337072564 3551268535 4210316453 2857304716 
1656016234 3055850193 4074141119 2702683976 3903520288 2708109896 1303194166  676764765 
   1073839 3417024471  530027902  664548902 3934189521 1118172394 1598501076 1353136139 
3556356767 3851436279  787984702 3614996657 2653843342  350845053 2540767452  341795141 
4131579558 2852231303  347703279  304754275 3637218358 1191420956 4250273882 2217329477 
3619012484 2320390083 1618600250  100602741 3962829626 3325838530 3310041575 2202357234 
2410265700 1855854724 1586666379 1893433651 4212894970 3078470962 3005791950 3645097109 
2729330720  178175659 1878759843 3613064024 2235022317 1229007963 1217716121 3424643385 
2025817426 2541310454 3491127040  834075061 1476080952  527792572 3142617040  990164480 
3538861805 1101804820  254185979 2139277356 3053978085 3636278570 1588526078 3265686058 
3200724466 3305433961 1714292212 2894641386  286242900 2390694965 1104137642 1729447649 
2603147116 1739535876 2332325654 3923517970  975963350 3046750553 4287139816 2887426453 
3205373337 2829120066 3989557087 1090404329 2762938959 2016187695  188074317  562585328 
1185556641 3980179851 2922039667 3215853289  946979886 2822925104  803185936 1852384677 
2297156223 2799487985 1756284627 2317738144 1335401093  674337096 2899555797 3996541014 
3014749938  283034558 3481962136 3810308241 2725662577  744192370 3665583468  571653166 
3181462357 1782231829  563269281 1274600369 2386970918  363976120 2931953430  614822572 
1661454733  449226294 3506516244 3427050773 2620464687  505585754 3256549852  321182353 
3890429063 2030404657 1191957414 3469037079  947528907  578915297 2155016115  557136361 
 374100253 1716551606 1064892772 2282836509 2205887435  735861059 2088833463 3884993958 
1520195389 3349226581 4116948321 3654190067 3585109483 2170692034 4104050396 1431760441 
 871040163 3131221596 4039637966 3255680597 1537348827 4274038615 2766931218 3080056590 
2427576150 1698622741  491269657 2957152254 4003327323 1665870563 2898998885  350910601 
3377912239   56558544 2757732126 3003019578 3020476484 1103562767  266867533 3238470691 
 101050052 2174141449 4261294044 3377977245 4283033233 1649319944 2407542500 1186270608 
 506638155  853299114  528018288 3370360190 3432726533   33304936  746516661  864441540 
 877624554  549536499 2512486873 1718378202 1877264374 3907125156 3480301523 1222420918 
2962412787 1897386667  565602854  870635873 1837265416 2093005006 2069832336  421542850 
 546177829 3737295211 2022730805  114777545 1045010491 1474827040    7636789 3926378049 
 825140914 3894878768 2235348820 4209167372 1363271078 1633012431 2604598105 1475584955 
 363136592 2939993958 3395026321 2769982499 2579982422 3377853512 1926697291 1309179303 


Exited: ExitFailure 10


Create a new paste based on this one


Comments: