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