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 | |
21 | int 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 | |