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