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

source code of libcxx/test/std/numerics/rand/rand.util/rand.util.seedseq/generate.pass.cpp