fork download
  1. // C99 Complementary Multiply With Carry generator
  2. // C99 Complementar Multiplicar com o gerador Carry
  3. #include <bits/stdc++.h>
  4.  
  5. // CMWC working parts
  6. // Peças de trabalho CMWC
  7. #define CMWC_CYCLE 4096 // as Marsaglia recommends // como Marsaglia recomenda
  8. #define CMWC_C_MAX 809430660 // as Marsaglia recommends // como a Marsaglia recomenda
  9.  
  10. struct cmwc_state{
  11. uint32_t Q[CMWC_CYCLE];
  12. uint32_t c; // must be limited with CMWC_C_MAX // deve ser limitado com CMWC_C_MAX
  13. unsigned i;
  14. };
  15.  
  16. // Make 32 bit random number (some systems use 16 bit RAND_MAX [Visual C 2012 uses 15 bits!])
  17. //Cria um número aleatório de 32 bits (alguns sistemas usam RAND_MAX de 16 bits [Visual C 2012 usa 15 bits!]) Uint32_t rand32 ( void )
  18. uint32_t rand32(void){
  19. uint32_t result = rand();
  20. return result << 16 | rand();
  21. }
  22.  
  23. // Init the state with seed
  24. // Inicia o estado com semente
  25. void initCMWC(struct cmwc_state *state, unsigned int seed){
  26. srand(seed);
  27. for (int i = 0; i < CMWC_CYCLE; i++)
  28. state->Q[i] = rand32();
  29. do
  30. state->c = rand32();
  31. while (state->c >= CMWC_C_MAX);
  32. state->i = CMWC_CYCLE - 1;
  33. }
  34.  
  35. // CMWC engine
  36. // Mecanismo CMWC
  37. uint32_t randCMWC(struct cmwc_state *state){ //EDITED parameter *state was missing // O parâmetro EDITED * state estava ausente
  38. uint64_t const a = 18782; // as Marsaglia recommends // como Marsaglia recomenda
  39. uint32_t const m = 0xfffffffe; // as Marsaglia recommends // como Marsaglia recomenda
  40. uint64_t t;
  41. uint32_t x;
  42.  
  43. state->i = (state->i + 1) & (CMWC_CYCLE - 1);
  44. t = a * state->Q[state->i] + state->c;
  45. /* Let c = t / 0xfffffff, x = t mod 0xffffffff */
  46. // Vamos c = t / 0xfffffff, x = t mod 0xffffffff
  47. state->c = t >> 32;
  48. x = t + state->c;
  49. if (x < state->c) {
  50. x++;
  51. state->c++;
  52. }
  53. return state->Q[state->i] = m - x;
  54. }
  55.  
  56. int main(){
  57. struct cmwc_state cmwc;
  58. unsigned int seed = time(NULL);
  59.  
  60. initCMWC(&cmwc, seed);
  61. uint32_t num;
  62. for(int h=0; h<1000; h++){
  63. num = randCMWC(&cmwc);
  64. // printf("Random CMWC: %u\n", (randCMWC(&cmwc)%10));
  65. printf("%u %u\n",(num),(num%10));
  66. }
  67. }
Success #stdin #stdout 0s 15232KB
stdin
Standard input is empty
stdout
2217110080 0
2520846656 6
1964459258 8
3510855718 8
4035612778 8
1100063343 3
4119436569 9
4158892301 1
3181678953 3
314117423 3
1077520829 9
595344359 9
2475331563 3
1782450116 6
1692154888 8
1277666184 4
3745027082 2
3457354053 3
1961154949 9
1035750786 6
1814248972 2
3570707310 0
3842399984 4
964997894 4
1182161462 2
3667844309 9
2963742481 1
988413774 4
123195184 4
78039239 9
2131681311 1
408812052 2
4172157346 6
4072281031 1
101886883 3
3413812271 1
3584599804 4
2132526482 2
3352291336 6
1227268659 9
1685649198 8
4238397598 8
73988460 0
2497127935 5
1933851679 9
3269183175 5
3208707266 6
2465677617 7
2726187491 1
4028537464 4
2680070156 6
1632122459 9
2297129904 4
3637708523 3
2900446327 7
1655732746 6
1200112590 0
3983927212 2
2425433003 3
4060558403 3
811436879 9
2705391338 8
1236005641 1
689072435 5
678602064 4
1362642249 9
3965392478 8
451989940 0
3128519207 7
3466769162 2
2681907001 1
1164461370 0
2122003392 2
1377909971 1
894681756 6
902216576 6
1189803054 4
3049825094 4
3688125818 8
1631436511 1
1489007653 3
1531997854 4
1039112406 6
2958851920 0
3042835303 3
1092375146 6
350165632 2
4046240540 0
343103979 9
3748894918 8
1604828453 3
3844957326 6
2535236236 6
3762675795 5
3247021294 4
1519434093 3
4239853911 1
1204187920 0
1002764373 3
1049629626 6
381609508 8
2237411110 0
1477541024 4
552431795 5
102892352 2
1274344329 9
2354865078 8
3327037134 4
3654849262 2
113940306 6
3322345746 6
864649980 0
3773519357 7
4272222693 3
4196618251 1
1297767686 6
2305564056 6
1419868276 6
4026443120 0
2341432819 9
479916638 8
1540158017 7
3402706919 9
1916857331 1
3400588128 8
559236148 8
4290253822 2
2659506417 7
2997292720 0
3830117738 8
3591759152 2
3094209246 6
761451730 0
3856939214 4
2211873769 9
3912169824 4
3661429724 4
1195732586 6
2572057169 9
397211829 9
3572956630 0
1457153138 8
3936333514 4
2619172525 5
3889255309 9
2552387455 5
771129852 2
2148263241 1
2385118239 9
2866933832 2
3270335906 6
473135895 5
3238809704 4
1696284820 0
2763527650 0
2855322011 1
1705346654 4
1216555222 2
1367123723 3
2317692737 7
3425974173 3
767741638 8
3275004715 5
2457024477 7
54813949 9
3448822169 9
558069690 0
465622332 2
1534975248 8
501140410 0
3159320916 6
492055200 0
616285292 2
885061350 0
2960170561 1
3214282584 4
3276171708 8
831669816 6
2506391361 1
942465685 5
2808052032 2
1509211166 6
1482721655 5
2881843239 9
976151219 9
1957531540 0
1779743974 4
2405172871 1
4173482263 3
211675032 2
30912153 3
292735499 9
118074878 8
457318121 1
1204275569 9
3406264750 0
2591661790 0
1540184323 3
1794707286 6
693210406 6
3205861037 7
2956143260 0
1286885624 4
3049661804 4
1645905524 4
1232623911 1
1668631268 8
2433317214 4
2396619796 6
2895652405 5
2959969426 6
3329074211 1
3037128596 6
292175179 9
2603783586 6
1252349281 1
4204285882 2
1170194974 4
2189413428 8
2659418351 1
385964752 2
1418603843 3
1119096790 0
4501395 5
377764287 7
2737021693 3
4144326883 3
3135381660 0
3648731480 0
242699732 2
2459746712 2
3981764974 4
3002814510 0
2259800449 9
387298831 1
591478085 5
3933907276 6
1788395008 8
352694507 7
2921131565 5
2124512470 0
1626005295 5
3959620104 4
790215335 5
801749862 2
2444282945 5
4162747892 2
576862521 1
3032456015 5
2275714969 9
307038477 7
4120466857 7
404999957 7
660014127 7
2410178604 4
3267654443 3
545779978 8
445867533 3
1521028451 1
476708568 8
2290319628 8
4015283715 5
2242245113 3
1117060827 7
1890441725 5
4150503534 4
2115369726 6
1693280188 8
1978407497 7
2636796136 6
1183032811 1
1005666629 9
2266450478 8
2660199852 2
3501518744 4
2607563010 0
3465382726 6
4271461123 3
520226508 8
2007723193 3
2928328508 8
2376862659 9
3920423965 5
4280783866 6
3806626844 4
746078196 6
3998095221 1
2938141687 7
545091318 8
2769091591 1
2890434319 9
1240838460 0
2981004342 2
883568742 2
743186485 5
752441291 1
1353793188 8
744393669 9
2106680856 6
1917314923 3
1192428602 2
1616033423 3
2154750417 7
112428060 0
829680061 1
1485930120 0
2895038357 7
1197165859 9
2976558901 1
826308108 8
205226361 1
2504043906 6
2050885672 2
3218309011 1
1354647340 0
1109370849 9
1368289965 5
1931417167 7
1090407829 9
1928731340 0
2114993082 2
1401030398 8
1854389257 7
354217765 5
2223991913 3
1975818762 2
1978957152 2
3001450237 7
1853295535 5
1474167793 3
917117226 6
1983861997 7
1160830461 1
1978182286 6
1519802025 5
1836882728 8
1526529528 8
2720414240 0
3263054583 3
2859306970 0
4113281426 6
1178298552 2
1826084019 9
2104333408 8
291799564 4
1783019793 3
413928133 3
1663696567 7
2144027600 0
4115575041 1
2804932399 9
3589950961 1
2057953270 0
448259285 5
1327678237 7
2936313476 6
1617330243 3
875009492 2
2211097042 2
1729641574 4
1576368911 1
1012053616 6
330426745 5
627240859 9
1538901267 7
4040493188 8
1694161586 6
2909470224 4
3844531785 5
2370022058 8
846438126 6
887566797 7
2268812688 8
3357355750 0
3417216427 7
2442893667 7
2808838947 7
65687610 0
3334702791 1
753194047 7
4110638918 8
2627449940 0
216156482 2
116791964 4
97314510 0
1914941274 4
2058166838 8
2805424206 6
2143604806 6
3055912854 4
4189802216 6
3317987224 4
4215559618 8
1164750754 4
562326055 5
3493354836 6
3882804665 5
1990910132 2
3096147187 7
1203180190 0
4068318143 3
2433195168 8
2251344970 0
674012164 4
1146291572 2
1972874317 7
2004350096 6
2173170052 2
1072282198 8
2505427677 7
153847173 3
3965643715 5
1178915222 2
1529736725 5
988008075 5
1497247820 0
41990453 3
3377417369 9
3668580982 2
2960653071 1
2416732081 1
177766733 3
267174616 6
3137855174 4
3692944922 2
865836438 8
321679197 7
4270089196 6
200357588 8
1425726368 8
2515559269 9
3387391082 2
3342569149 9
4042353650 0
306158564 4
354421157 7
4099420376 6
713789123 3
1486880783 3
3205271897 7
2012751726 6
3926648729 9
757298499 9
4231854452 2
1112273508 8
3540744976 6
1193792082 2
1822191536 6
1293724734 4
2123903819 9
855265245 5
2874902066 6
2822366095 5
2153659315 5
1798528626 6
818166179 9
3050264265 5
3315390912 2
2419724341 1
156064403 3
37023765 5
4147856837 7
4259069357 7
336261265 5
2295619068 8
663366722 2
159398380 0
2486557217 7
740801504 4
1818685053 3
944967640 0
3311890980 0
636508776 6
726432725 5
602120446 6
811809909 9
3842418481 1
1183805739 9
3558659418 8
897636357 7
2529604839 9
647537926 6
762048226 6
2119723478 8
3399713767 7
1138088347 7
2833984616 6
3482183774 4
572825811 1
3370690907 7
1575037274 4
4013521465 5
136927892 2
2054542216 6
588561137 7
1901206500 0
9610444 4
2828099203 3
256784657 7
131142307 7
1906670908 8
3092056784 4
777292037 7
2078094003 3
437849268 8
21114381 1
4042677029 9
2308903070 0
1931582438 8
1308537521 1
1126583367 7
1978274786 6
3837173050 0
1469759247 7
906230083 3
371527407 7
1511314942 2
1412482233 3
1823227723 3
850228350 0
1455984936 6
2966715914 4
2142234817 7
3666992893 3
2471708692 2
4224751271 1
3069044927 7
1589212645 5
4160262997 7
3944075837 7
2134669188 8
3826937088 8
3823763103 3
3704471062 2
1549811655 5
2428006386 6
1699328128 8
2707092188 8
2460970812 2
1019760840 0
1178617501 1
1403588147 7
1437572759 9
61152544 4
2484411625 5
4222456785 5
3984500731 1
163563342 2
1536836672 2
2479083323 3
824566030 0
1372737885 5
4096022099 9
756700506 6
3143032345 5
1266627822 2
3269452272 2
421551502 2
3026799240 0
1035759525 5
3019185875 5
3033354679 9
1519446042 2
445203628 8
1179490702 2
1778785778 8
175394472 2
707522185 5
2868665326 6
3457664096 6
2999195928 8
3509806687 7
2047306406 6
3676989997 7
4080814754 4
2381733619 9
3749841634 4
1887967946 6
502246116 6
4152395475 5
1283530464 4
1583457358 8
1383868800 0
1496152897 7
2451903281 1
1554288129 9
1850064838 8
2023983467 7
361812513 3
1622625812 2
4025847457 7
650830384 4
408845821 1
1336366276 6
2736204109 9
4183819662 2
2505293950 0
1682087870 0
2769165859 9
1435706418 8
2321903875 5
232062828 8
170548511 1
187022912 2
2699508082 2
1766211213 3
2497434657 7
4241080363 3
2499996674 4
3873652066 6
3340389685 5
131536973 3
701880652 2
2594347648 8
2118668710 0
238041574 4
370826859 9
4032427476 6
3307375362 2
242901663 3
3289124695 5
3243893393 3
2675770037 7
2185708306 6
1450955151 1
1187557088 8
3611983101 1
1206963549 9
2108053280 0
1870221944 4
2939580385 5
4178545179 9
2565562142 2
2366749869 9
423906348 8
1084404668 8
704108192 2
1977442201 1
1307655157 7
1437851107 7
3166162884 4
3655856960 0
2171704090 0
1802081501 1
3490541143 3
2556649737 7
2348511294 4
4105518504 4
3658441334 4
497797667 7
1993899338 8
3960269998 8
2362449803 3
961838300 0
468683098 8
1748299595 5
3453471364 4
1656140945 5
4187386907 7
295937564 4
764697807 7
1893004934 4
1482096039 9
4046444411 1
582793458 8
76351679 9
4175498149 9
2315949259 9
3124043030 0
911802324 4
4112650377 7
2572219696 6
3180336704 4
403045750 0
523826569 9
2582211855 5
767421291 1
4073459880 0
349779829 9
1909828524 4
3185581120 0
1289340640 0
4111170503 3
2499600442 2
127173984 4
2825553779 9
3477812908 8
725570082 2
1506004453 3
737029073 3
1809311410 0
471934405 5
2792548195 5
2034322051 1
2131345725 5
2275089379 9
1792729465 5
3627392154 4
4080164333 3
1255784844 4
3093666007 7
3005077425 5
3013750496 6
747785290 0
3550701677 7
1409296761 1
542192927 7
1645107811 1
3406541044 4
251335208 8
1210938317 7
1173874092 2
2706796566 6
3385287497 7
4166290900 0
1683492867 7
3889843325 5
3421743193 3
3872035471 1
2457075006 6
707626183 3
2940497576 6
2585176343 3
2539396307 7
3029673643 3
56933381 1
486208118 8
2224271059 9
159553373 3
2417401835 5
1589582407 7
1649150041 1
3699243095 5
3009876410 0
2133501714 4
2856253461 1
405262954 4
1142958266 6
2622199194 4
3098424161 1
1354814339 9
3904893918 8
2690241718 8
1260636640 0
3463178389 9
4276146849 9
779658266 6
3851256531 1
2467018411 1
608787877 7
1099397990 0
2669767419 9
3630772287 7
619137992 2
1844798446 6
3021078511 1
466150571 1
2266810978 8
523697724 4
519339186 6
2655786859 9
4147573825 5
3410853977 7
3321486578 8
4000365484 4
3930074065 5
1742267670 0
2587429292 2
329273201 1
2286792346 6
1302755676 6
1008228796 6
1759137387 7
1001836318 8
1770961214 4
1208297460 0
1897521833 3
2535515616 6
2445209021 1
1245935095 5
3954006404 4
4259920500 0
2171199918 8
923464931 1
3923071397 7
3189658654 4
239255297 7
4254684985 5
377406364 4
2211127278 8
1576832414 4
2742287853 3
2943046598 8
883836796 6
1381392878 8
458593539 9
263201975 5
1445491701 1
3179934542 2
631946028 8
5416306 6
2643697801 1
2031031572 2
4136176632 2
2674419200 0
2317286408 8
417735209 9
1061052118 8
194304072 2
1895229283 3
4284187410 0
1524193361 1
3626228637 7
1597780217 7
1432750520 0
3529875314 4
1024422008 8
3226554871 1
3749025148 8
3974225813 3
2613028516 6
1499716983 3
1478405126 6
1881107204 4
1805480526 6
3436523338 8
1750548664 4
61945449 9
873955557 7
1670354706 6
2625739312 2
3502253826 6
3425569363 3
3663369900 0
3284570080 0
1096448178 8
2463124784 4
2130079272 2
4290050991 1
3091665824 4
1944929461 1
2278085377 7
3681174009 9
3324030006 6
665505834 4
2949309103 3
2093783988 8
1303256376 6
2189985453 3
3921355710 0
963914330 0
3718363357 7
14199824 4
2711111571 1
3284093890 0
1196406530 0
2484925662 2
2032823216 6
1576764217 7
2139340177 7
2591969000 0
281987195 5
184770334 4
175400643 3
2334304452 2
3783898964 4
2604387394 4
1267334697 7
155642759 9
3119211074 4
2267840716 6
2399634111 1
1610097125 5
2744817852 2
654693748 8
2530767628 8
747746129 9
3880136505 5
464742285 5
3056602026 6
1236610776 6
1758441511 1
2620541075 5
3595991765 5
1164349316 6
2811220374 4
1525656377 7
3347256297 7
2950869648 8
109469941 1
419892011 1
730676408 8
639702906 6
1810406445 5
661061743 3
1087722397 7
3796308415 5
4260645693 3
1299133033 3
1549057604 4
939761199 9
1700125502 2
1069595127 7
3045985093 3
4002246634 4
3799537815 5
1222393198 8
4090368149 9
4106270923 3
3705988203 3
2543592748 8
1421922663 3
3444294533 3
3966955131 1
3270563187 7
610791016 6
3080240930 0
924462483 3
1042483127 7
3313063289 9
3357783997 7
4199791401 1
2958861694 4
40010864 4
151470812 2
3871814056 6
2361679959 9
3041490801 1
564260724 4
1083322242 2
3832190599 9
2796657587 7
2909392139 9
2329503995 5
1723671354 4
1150953109 9
1249213394 4
2924585212 2
3848708345 5
3567272606 6
1847629572 2
2214608855 5
4283458103 3
1402598748 8
1018597410 0
458625756 6
3430091023 3
1204106903 3
2954638209 9
4177175151 1
3513812953 3
1252625617 7
3615317718 8
1358336643 3
2797731694 4
207140260 0
442178953 3
3174080698 8
3326941890 0
2998854737 7
2702941424 4
3771718663 3
3117384680 0
1849321814 4
1885651112 2
3044280024 4
2591986759 9
3639832242 2
4068689596 6
3901017767 7
2379563751 1
1334506185 5
3261563363 3
2028788828 8
3598928939 9
3011869885 5
3073195674 4
220094966 6
3495913218 8
4187166873 3
2016192521 1
2278664724 4
1605071270 0
3731127207 7
2004885239 9
1575422429 9
1272821587 7
1440535971 1
3469396648 8
2545725504 4
3398324180 0
2100149057 7
35420457 7
298880995 5
1453293292 2
4137495393 3
1059570115 5
4076876449 9
1738090872 2
3582147298 8