1 //===----------------------------------------------------------------------===//
2 //
3 // The LLVM Compiler Infrastructure
4 //
5 // This file is dual licensed under the MIT and the University of Illinois Open
6 // Source Licenses. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9
10 // <random>
11
12 // class seed_seq;
13
14 // template<class RandomAccessIterator>
15 // void generate(RandomAccessIterator begin, RandomAccessIterator end);
16
17 #include <random>
18 #include <cassert>
19
main()20 int main()
21 {
22 {
23 // These numbers generated from a slightly altered version of dSFMT
24 // http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/index.html
25 unsigned a[] =
26 {
27 509928861u,
28 482551238u,
29 141770655u,
30 3445468037u,
31 1614807826u,
32 3110698871u,
33 809182926u,
34 2644632325u,
35 3885131857u,
36 1278630374u,
37 3648975313u,
38 1217833759u,
39 1509686260u,
40 2817190507u,
41 134525747u,
42 250267852u,
43 2559105345u,
44 2416641579u,
45 426100435u,
46 486929906u,
47 241178241u,
48 3531539379u,
49 704692991u,
50 3001633456u,
51 3990516671u,
52 2619782509u,
53 588842726u,
54 2871949673u,
55 621390331u,
56 2304055997u,
57 3809702625u,
58 2471383485u,
59 1630735687u,
60 2167939898u,
61 2070992669u,
62 2826890739u,
63 1714346061u,
64 1912761420u,
65 539780511u,
66 716119356u,
67 1342493369u,
68 1216009367u,
69 2864243850u,
70 36288867u,
71 2981095630u,
72 2480586007u,
73 1287539180u,
74 1804977887u,
75 2219960896u,
76 297158412u,
77 2839013626u,
78 1971706101u,
79 3588181149u,
80 1387242816u,
81 3713499635u,
82 3408234160u,
83 3179393218u,
84 1359207226u,
85 3119279997u,
86 2777679329u,
87 125221793u,
88 902631799u,
89 949389096u,
90 3415339313u,
91 4117407143u,
92 3119227103u,
93 1787026946u,
94 3917387257u,
95 3936044384u,
96 2242085379u,
97 1140709958u,
98 2523265662u,
99 3627073995u,
100 3604398568u,
101 1427913954u,
102 2465898599u,
103 3825653050u,
104 2090876078u,
105 232270946u,
106 3116274782u,
107 1252172657u,
108 3197497894u,
109 3983224490u,
110 1939344836u,
111 4158531887u,
112 88050086u,
113 2343094701u,
114 1067025562u,
115 3321491106u,
116 3772162169u,
117 909332669u,
118 1671671873u,
119 755193996u,
120 978524521u,
121 2164582730u,
122 1757783103u,
123 3411415001u,
124 850017018u,
125 3068762300u,
126 555996984u,
127 2404040146u,
128 3397007611u,
129 237680219u,
130 245818821u,
131 177824968u,
132 3220945682u,
133 304446762u,
134 2267298065u,
135 1878973555u,
136 3050739800u,
137 535731508u,
138 1160102565u,
139 4109066907u,
140 984269821u,
141 3681788896u,
142 60254699u,
143 3890962421u,
144 2991673698u,
145 3982271427u,
146 3514243671u,
147 1234870914u,
148 2069958363u,
149 3867828422u,
150 1847469687u,
151 503598128u,
152 967934988u,
153 289386211u,
154 393279961u,
155 835485527u,
156 3708682854u,
157 965218590u,
158 4020339834u,
159 2159101708u,
160 2575134771u,
161 376656690u,
162 3499375240u,
163 3105954900u,
164 2786692328u,
165 3458480699u,
166 1207173847u,
167 2051152535u,
168 2738812911u,
169 2954646330u,
170 2774866710u,
171 2162149150u,
172 3993372257u,
173 2868120585u,
174 3086420190u,
175 3791115537u,
176 3226697711u,
177 1818303409u,
178 4206013897u,
179 1245186807u,
180 1680347447u,
181 684800149u,
182 2372078492u,
183 2566952562u,
184 3310947940u,
185 3885964747u,
186 3270357885u,
187 2098965232u,
188 609044652u,
189 434910954u,
190 93043847u,
191 805217072u,
192 883298424u,
193 3850995479u,
194 1840717689u,
195 124278163u,
196 4250050101u,
197 2337070911u,
198 2576763405u,
199 2518189119u,
200 3059082421u,
201 1532107996u,
202 2920167825u,
203 2726963926u,
204 3951524890u,
205 1272835728u,
206 1039392592u,
207 1237920408u,
208 1996153268u,
209 647883626u,
210 4064365193u,
211 355588474u,
212 3625797533u,
213 1209959194u,
214 503163662u,
215 530295589u,
216 1668578780u,
217 969028048u,
218 2489337768u,
219 841218738u,
220 14126306u,
221 1854884627u,
222 3617055808u,
223 202224793u,
224 1744552899u,
225 1559016256u,
226 3455976027u,
227 1064269942u,
228 2990703287u,
229 1169718685u,
230 1411804743u,
231 290849805u,
232 756035681u,
233 1505272475u,
234 1426658932u,
235 16045749u,
236 3900455443u,
237 108521850u,
238 1009491914u,
239 3928801938u,
240 1022079325u,
241 3076867150u,
242 4268343543u,
243 2886814247u,
244 2005055376u,
245 1649037732u,
246 1954533894u,
247 3779223482u,
248 1093746989u,
249 2376482601u,
250 3561720470u,
251 1870836501u,
252 651953759u,
253 1504660027u,
254 2097900540u,
255 2252668945u,
256 2469849023u,
257 1986217648u,
258 2026387757u,
259 131611273u,
260 1467981299u,
261 3440588252u,
262 1916199579u,
263 959039804u,
264 2895114746u,
265 3292235117u,
266 649379239u,
267 28649189u,
268 3121113086u,
269 3829761771u,
270 1675837301u,
271 1636154723u,
272 3737794169u,
273 4082428060u,
274 1904712095u,
275 2483810990u,
276 979972563u,
277 1269082707u,
278 370986843u,
279 1233170438u,
280 3008501783u,
281 3905837878u,
282 1566704758u,
283 2380919351u,
284 159980022u,
285 1334100319u,
286 2492554074u,
287 137995234u,
288 2318192908u,
289 2608964837u,
290 1061756617u,
291 2760140790u,
292 4069446576u,
293 1995030350u,
294 1037005594u,
295 3489306635u,
296 1588786838u,
297 513304862u,
298 3305490303u,
299 2264317975u,
300 3441620307u,
301 4116970950u,
302 3121104936u,
303 1889858928u,
304 2336693483u,
305 3906421686u,
306 2112501080u,
307 2916376262u,
308 2244436629u,
309 663123276u,
310 774309763u,
311 258379821u,
312 3845948150u,
313 3747409682u,
314 275936617u,
315 563064995u,
316 4049677403u,
317 2099547498u,
318 699768412u,
319 1193153383u,
320 4289059706u,
321 3228950241u,
322 1258043728u,
323 1334659727u,
324 3780523664u,
325 1150773584u,
326 2509712235u,
327 2088544320u,
328 1610096547u,
329 3486280247u,
330 1737969289u,
331 1530372860u,
332 2563496419u,
333 2535243890u,
334 998106254u,
335 816066803u,
336 1138534811u,
337 1405672211u,
338 2094652173u,
339 1516292650u,
340 2618233360u,
341 3603340340u,
342 247950637u,
343 119238855u,
344 1858201484u,
345 3459729922u,
346 157759693u,
347 8278624u,
348 3223944237u,
349 3937209237u,
350 3820737454u,
351 839194830u,
352 2385155004u,
353 3872251779u,
354 1375779033u,
355 2333521764u,
356 4025446588u,
357 3839106064u,
358 374878047u,
359 1312756310u,
360 1661068116u,
361 1321601295u,
362 4254646350u,
363 3813168945u,
364 134103711u,
365 1535586498u,
366 82369644u,
367 411323516u,
368 761969086u,
369 819179215u,
370 582595825u,
371 3212591411u,
372 665647256u,
373 2372804634u,
374 2378814089u,
375 801724318u,
376 658137482u,
377 2084329677u,
378 2512952888u,
379 1573871611u,
380 570440739u,
381 3791634131u,
382 1754412850u,
383 406040873u,
384 2576963615u,
385 535767962u,
386 1405150444u,
387 3050488583u,
388 3870648463u,
389 2201665400u,
390 178518008u,
391 1050761986u,
392 1635790851u,
393 2757604743u,
394 1194306620u,
395 3895813535u,
396 259506203u,
397 1836108753u,
398 555242075u,
399 2574778399u,
400 777988603u,
401 2306149504u,
402 2810362568u,
403 402408487u,
404 2163697780u,
405 1982851065u,
406 153191404u,
407 1346605886u,
408 197579289u,
409 3847665347u,
410 2437615293u,
411 819252195u,
412 3379927756u,
413 1375088563u,
414 2650550959u,
415 2949512074u,
416 3616578300u,
417 1616680753u,
418 1943918335u,
419 2372676669u,
420 599487215u,
421 2422499758u,
422 3164569986u,
423 594265585u,
424 667867933u,
425 2382753501u,
426 1213715652u,
427 1470661916u,
428 566771851u,
429 463440918u,
430 3056034602u,
431 4101174909u,
432 130576467u,
433 2390765932u,
434 1878895359u,
435 2047260663u,
436 3236801323u,
437 1417182786u,
438 2650291174u,
439 541535507u,
440 2050658788u,
441 1497955566u,
442 2322165653u,
443 2177087336u,
444 1286897331u,
445 1168276780u,
446 2296212785u,
447 865258239u,
448 1996766009u,
449 2012854679u,
450 1601388981u,
451 2613134235u,
452 1657591526u,
453 2928355430u,
454 3608354462u,
455 744304148u,
456 4205438799u,
457 3436255438u,
458 2852837451u,
459 3546154475u,
460 2198801660u,
461 2941229067u,
462 1725744406u,
463 1576016233u,
464 326273484u,
465 3350602572u,
466 2525026956u,
467 529269391u,
468 742537386u,
469 966948684u,
470 4207482684u,
471 1647708147u,
472 772473614u,
473 4100132656u,
474 2071821864u,
475 1304991378u,
476 2104686786u,
477 494532571u,
478 1596637043u,
479 3530310572u,
480 3844404338u,
481 311529967u,
482 2146085784u,
483 1023590767u,
484 3264294551u,
485 1868912500u,
486 1616049700u,
487 4044971489u,
488 226083499u,
489 2644402452u,
490 671262u,
491 3856282165u,
492 2788249556u,
493 2975877350u,
494 3022011519u,
495 482463024u,
496 3197313892u,
497 2458947070u,
498 213085732u,
499 3423982376u,
500 1127434251u,
501 3003351323u,
502 3859782824u,
503 1452447943u,
504 1377205388u,
505 294467710u,
506 4017757977u,
507 4176004933u,
508 1973840971u,
509 1057204069u,
510 2631053578u,
511 1518315828u,
512 1733084351u,
513 2897935365u,
514 371135589u,
515 2166429075u,
516 1316999184u,
517 917942378u,
518 4234919037u,
519 3994887147u,
520 202839671u,
521 2611806597u,
522 1763402132u,
523 2528354843u,
524 2928374144u,
525 4287461088u,
526 3374274817u,
527 2515840515u,
528 1174711579u,
529 1526125414u,
530 1328334421u,
531 1467789564u,
532 746112865u,
533 2522923249u,
534 2846786366u,
535 785624778u,
536 3640382502u,
537 699425627u,
538 2333340032u,
539 879149811u,
540 1012137370u,
541 3671295088u,
542 1115225691u,
543 2008076767u,
544 3224593008u,
545 409074767u,
546 3405081375u,
547 1732184447u,
548 4131742042u,
549 2887579728u,
550 411122719u,
551 49575303u,
552 2452487329u,
553 132404436u,
554 2634269867u,
555 628865612u,
556 2089064207u,
557 3493619675u,
558 573570698u,
559 2803401952u,
560 1846326706u,
561 2776480783u,
562 3202282367u,
563 161406647u,
564 555882857u,
565 3002347158u,
566 3646590134u,
567 3970439001u,
568 3593229755u,
569 589030935u,
570 1156189491u,
571 4233262968u,
572 1884160487u,
573 1538393768u,
574 2259575756u,
575 1419917258u,
576 658738179u,
577 2762821193u,
578 3753817926u,
579 760570680u,
580 900223123u,
581 3199204483u,
582 3152387802u,
583 3518662321u,
584 1138026800u,
585 4166103824u,
586 4256962887u,
587 3860671603u,
588 2476911454u,
589 336216996u,
590 708885235u,
591 725397672u,
592 1803116762u,
593 2785555576u,
594 101740015u,
595 4078718445u,
596 1955237214u,
597 9650972u,
598 449296169u,
599 584729435u,
600 3295180521u,
601 589654348u,
602 4256205129u,
603 3872811168u,
604 1159848257u,
605 3914402308u,
606 739056677u,
607 2654817235u,
608 2975781832u,
609 2945335776u,
610 2792662538u,
611 4124362519u,
612 1578034244u,
613 347127450u,
614 818851140u,
615 2127100315u,
616 2486499071u,
617 4198130806u,
618 1869105609u,
619 1961961717u,
620 1651285423u,
621 376774848u,
622 2681263019u,
623 1185959234u,
624 1674813864u,
625 32812913u,
626 3511671436u,
627 3250344299u,
628 2961919237u,
629 722029715u,
630 3677835234u,
631 3534013806u,
632 2896926420u,
633 2405611392u,
634 1523923100u,
635 538451356u,
636 2872548905u,
637 3122230170u,
638 337087364u,
639 2659340735u,
640 3849128055u,
641 556114376u,
642 1997152544u,
643 3761450839u,
644 3143779940u,
645 3256759779u,
646 2844565122u,
647 228442897u,
648 3589092287u,
649 786119294u,
650 4089515771u,
651 3720982051u,
652 1236422652u,
653 2002271241u,
654 98809947u,
655 1925281885u,
656 3856119646u,
657 3522402037u,
658 2119723860u,
659 3500067577u,
660 3688915105u,
661 443441159u,
662 1795715271u,
663 2772968214u,
664 921416086u,
665 4274010930u,
666 3123194886u,
667 4156595625u,
668 2153773382u,
669 1880645824u,
670 1783695477u,
671 2639075904u,
672 2369609874u,
673 2020298024u,
674 3035677150u,
675 20152938u,
676 3700162244u,
677 2301383878u,
678 704787941u,
679 1912605772u,
680 801557569u,
681 3080244537u,
682 2116665331u,
683 2452111071u,
684 3506260614u,
685 862540580u,
686 1275699972u,
687 66210903u,
688 106773917u,
689 3693457478u,
690 2402783622u,
691 1239121180u,
692 676003037u,
693 2603048829u,
694 1725001637u,
695 1220274379u,
696 24507488u,
697 903764486u,
698 4189545897u,
699 1702746631u,
700 3218068652u,
701 3306659191u,
702 790973134u,
703 1265526960u,
704 3431804268u,
705 3325211765u,
706 3605213000u,
707 2877687268u,
708 2252987926u,
709 2380945092u,
710 858624424u,
711 1002964636u,
712 1862801950u,
713 1624111941u,
714 2506763607u,
715 760658520u,
716 2734479345u,
717 3411969548u,
718 771362694u,
719 3655222003u,
720 2713412965u,
721 2617767046u,
722 1779451182u,
723 3696950253u,
724 1494085808u,
725 1423735456u,
726 800705781u,
727 3797847307u,
728 3518984231u,
729 196474988u,
730 1813335502u,
731 2243046583u,
732 2578707704u,
733 2592488572u,
734 4085007200u,
735 3609770110u,
736 2731535571u,
737 3190540952u,
738 1865257805u,
739 1804143221u,
740 3166875197u,
741 1184225570u,
742 2013135819u,
743 3678444101u,
744 2569887572u,
745 3559018477u,
746 3823772506u,
747 1537738480u,
748 713705243u,
749 792081862u,
750 1581340885u,
751 3140030205u,
752 3435723625u,
753 3093218524u,
754 3683643763u,
755 753869336u,
756 590258834u,
757 608176704u,
758 180732483u,
759 31365344u,
760 29753898u,
761 2899243456u,
762 1020423361u,
763 152655309u,
764 3809554076u,
765 2069071231u,
766 4000441303u,
767 3046501174u,
768 1897816893u,
769 1610689080u,
770 2580357110u,
771 255270539u,
772 3363490012u,
773 3711397066u,
774 3983751767u,
775 1725231855u,
776 172296475u,
777 2179003295u,
778 660196982u,
779 526538193u,
780 2137670317u,
781 2219075701u,
782 1987239722u,
783 856404486u,
784 2976933454u,
785 3678014122u,
786 2713682703u,
787 3329090001u,
788 2248358519u,
789 3254616418u,
790 1747030903u,
791 1620566606u,
792 880370315u,
793 2337236788u,
794 2883145755u
795 };
796 const int n = 768;
797 unsigned b[n] = {0};
798 unsigned v[] = {3, 5, 7};
799 const int size = sizeof(v)/sizeof(v[0]);
800 std::seed_seq s(v, v + size);
801 s.generate(b, b + n);
802 for (int i = 0; i < n; ++i)
803 assert(a[i] == b[i]);
804 }
805 }
806