cxx/test/numerics/rand/rand.util/rand.util.seedseq/generate.pass.cpp
2010-05-11 21:36:01 +00:00

808 lines
20 KiB
C++

//===----------------------------------------------------------------------===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// <random>
// class seed_seq;
// template<class RandomAccessIterator>
// void generate(RandomAccessIterator begin, RandomAccessIterator end);
#include <random>
#include <cassert>
int main()
{
{
// These numbers generated from a slightly altered version of dSFMT
// http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/index.html
unsigned a[] =
{
509928861u,
482551238u,
141770655u,
3445468037u,
1614807826u,
3110698871u,
809182926u,
2644632325u,
3885131857u,
1278630374u,
3648975313u,
1217833759u,
1509686260u,
2817190507u,
134525747u,
250267852u,
2559105345u,
2416641579u,
426100435u,
486929906u,
241178241u,
3531539379u,
704692991u,
3001633456u,
3990516671u,
2619782509u,
588842726u,
2871949673u,
621390331u,
2304055997u,
3809702625u,
2471383485u,
1630735687u,
2167939898u,
2070992669u,
2826890739u,
1714346061u,
1912761420u,
539780511u,
716119356u,
1342493369u,
1216009367u,
2864243850u,
36288867u,
2981095630u,
2480586007u,
1287539180u,
1804977887u,
2219960896u,
297158412u,
2839013626u,
1971706101u,
3588181149u,
1387242816u,
3713499635u,
3408234160u,
3179393218u,
1359207226u,
3119279997u,
2777679329u,
125221793u,
902631799u,
949389096u,
3415339313u,
4117407143u,
3119227103u,
1787026946u,
3917387257u,
3936044384u,
2242085379u,
1140709958u,
2523265662u,
3627073995u,
3604398568u,
1427913954u,
2465898599u,
3825653050u,
2090876078u,
232270946u,
3116274782u,
1252172657u,
3197497894u,
3983224490u,
1939344836u,
4158531887u,
88050086u,
2343094701u,
1067025562u,
3321491106u,
3772162169u,
909332669u,
1671671873u,
755193996u,
978524521u,
2164582730u,
1757783103u,
3411415001u,
850017018u,
3068762300u,
555996984u,
2404040146u,
3397007611u,
237680219u,
245818821u,
177824968u,
3220945682u,
304446762u,
2267298065u,
1878973555u,
3050739800u,
535731508u,
1160102565u,
4109066907u,
984269821u,
3681788896u,
60254699u,
3890962421u,
2991673698u,
3982271427u,
3514243671u,
1234870914u,
2069958363u,
3867828422u,
1847469687u,
503598128u,
967934988u,
289386211u,
393279961u,
835485527u,
3708682854u,
965218590u,
4020339834u,
2159101708u,
2575134771u,
376656690u,
3499375240u,
3105954900u,
2786692328u,
3458480699u,
1207173847u,
2051152535u,
2738812911u,
2954646330u,
2774866710u,
2162149150u,
3993372257u,
2868120585u,
3086420190u,
3791115537u,
3226697711u,
1818303409u,
4206013897u,
1245186807u,
1680347447u,
684800149u,
2372078492u,
2566952562u,
3310947940u,
3885964747u,
3270357885u,
2098965232u,
609044652u,
434910954u,
93043847u,
805217072u,
883298424u,
3850995479u,
1840717689u,
124278163u,
4250050101u,
2337070911u,
2576763405u,
2518189119u,
3059082421u,
1532107996u,
2920167825u,
2726963926u,
3951524890u,
1272835728u,
1039392592u,
1237920408u,
1996153268u,
647883626u,
4064365193u,
355588474u,
3625797533u,
1209959194u,
503163662u,
530295589u,
1668578780u,
969028048u,
2489337768u,
841218738u,
14126306u,
1854884627u,
3617055808u,
202224793u,
1744552899u,
1559016256u,
3455976027u,
1064269942u,
2990703287u,
1169718685u,
1411804743u,
290849805u,
756035681u,
1505272475u,
1426658932u,
16045749u,
3900455443u,
108521850u,
1009491914u,
3928801938u,
1022079325u,
3076867150u,
4268343543u,
2886814247u,
2005055376u,
1649037732u,
1954533894u,
3779223482u,
1093746989u,
2376482601u,
3561720470u,
1870836501u,
651953759u,
1504660027u,
2097900540u,
2252668945u,
2469849023u,
1986217648u,
2026387757u,
131611273u,
1467981299u,
3440588252u,
1916199579u,
959039804u,
2895114746u,
3292235117u,
649379239u,
28649189u,
3121113086u,
3829761771u,
1675837301u,
1636154723u,
3737794169u,
4082428060u,
1904712095u,
2483810990u,
979972563u,
1269082707u,
370986843u,
1233170438u,
3008501783u,
3905837878u,
1566704758u,
2380919351u,
159980022u,
1334100319u,
2492554074u,
137995234u,
2318192908u,
2608964837u,
1061756617u,
2760140790u,
4069446576u,
1995030350u,
1037005594u,
3489306635u,
1588786838u,
513304862u,
3305490303u,
2264317975u,
3441620307u,
4116970950u,
3121104936u,
1889858928u,
2336693483u,
3906421686u,
2112501080u,
2916376262u,
2244436629u,
663123276u,
774309763u,
258379821u,
3845948150u,
3747409682u,
275936617u,
563064995u,
4049677403u,
2099547498u,
699768412u,
1193153383u,
4289059706u,
3228950241u,
1258043728u,
1334659727u,
3780523664u,
1150773584u,
2509712235u,
2088544320u,
1610096547u,
3486280247u,
1737969289u,
1530372860u,
2563496419u,
2535243890u,
998106254u,
816066803u,
1138534811u,
1405672211u,
2094652173u,
1516292650u,
2618233360u,
3603340340u,
247950637u,
119238855u,
1858201484u,
3459729922u,
157759693u,
8278624u,
3223944237u,
3937209237u,
3820737454u,
839194830u,
2385155004u,
3872251779u,
1375779033u,
2333521764u,
4025446588u,
3839106064u,
374878047u,
1312756310u,
1661068116u,
1321601295u,
4254646350u,
3813168945u,
134103711u,
1535586498u,
82369644u,
411323516u,
761969086u,
819179215u,
582595825u,
3212591411u,
665647256u,
2372804634u,
2378814089u,
801724318u,
658137482u,
2084329677u,
2512952888u,
1573871611u,
570440739u,
3791634131u,
1754412850u,
406040873u,
2576963615u,
535767962u,
1405150444u,
3050488583u,
3870648463u,
2201665400u,
178518008u,
1050761986u,
1635790851u,
2757604743u,
1194306620u,
3895813535u,
259506203u,
1836108753u,
555242075u,
2574778399u,
777988603u,
2306149504u,
2810362568u,
402408487u,
2163697780u,
1982851065u,
153191404u,
1346605886u,
197579289u,
3847665347u,
2437615293u,
819252195u,
3379927756u,
1375088563u,
2650550959u,
2949512074u,
3616578300u,
1616680753u,
1943918335u,
2372676669u,
599487215u,
2422499758u,
3164569986u,
594265585u,
667867933u,
2382753501u,
1213715652u,
1470661916u,
566771851u,
463440918u,
3056034602u,
4101174909u,
130576467u,
2390765932u,
1878895359u,
2047260663u,
3236801323u,
1417182786u,
2650291174u,
541535507u,
2050658788u,
1497955566u,
2322165653u,
2177087336u,
1286897331u,
1168276780u,
2296212785u,
865258239u,
1996766009u,
2012854679u,
1601388981u,
2613134235u,
1657591526u,
2928355430u,
3608354462u,
744304148u,
4205438799u,
3436255438u,
2852837451u,
3546154475u,
2198801660u,
2941229067u,
1725744406u,
1576016233u,
326273484u,
3350602572u,
2525026956u,
529269391u,
742537386u,
966948684u,
4207482684u,
1647708147u,
772473614u,
4100132656u,
2071821864u,
1304991378u,
2104686786u,
494532571u,
1596637043u,
3530310572u,
3844404338u,
311529967u,
2146085784u,
1023590767u,
3264294551u,
1868912500u,
1616049700u,
4044971489u,
226083499u,
2644402452u,
671262u,
3856282165u,
2788249556u,
2975877350u,
3022011519u,
482463024u,
3197313892u,
2458947070u,
213085732u,
3423982376u,
1127434251u,
3003351323u,
3859782824u,
1452447943u,
1377205388u,
294467710u,
4017757977u,
4176004933u,
1973840971u,
1057204069u,
2631053578u,
1518315828u,
1733084351u,
2897935365u,
371135589u,
2166429075u,
1316999184u,
917942378u,
4234919037u,
3994887147u,
202839671u,
2611806597u,
1763402132u,
2528354843u,
2928374144u,
4287461088u,
3374274817u,
2515840515u,
1174711579u,
1526125414u,
1328334421u,
1467789564u,
746112865u,
2522923249u,
2846786366u,
785624778u,
3640382502u,
699425627u,
2333340032u,
879149811u,
1012137370u,
3671295088u,
1115225691u,
2008076767u,
3224593008u,
409074767u,
3405081375u,
1732184447u,
4131742042u,
2887579728u,
411122719u,
49575303u,
2452487329u,
132404436u,
2634269867u,
628865612u,
2089064207u,
3493619675u,
573570698u,
2803401952u,
1846326706u,
2776480783u,
3202282367u,
161406647u,
555882857u,
3002347158u,
3646590134u,
3970439001u,
3593229755u,
589030935u,
1156189491u,
4233262968u,
1884160487u,
1538393768u,
2259575756u,
1419917258u,
658738179u,
2762821193u,
3753817926u,
760570680u,
900223123u,
3199204483u,
3152387802u,
3518662321u,
1138026800u,
4166103824u,
4256962887u,
3860671603u,
2476911454u,
336216996u,
708885235u,
725397672u,
1803116762u,
2785555576u,
101740015u,
4078718445u,
1955237214u,
9650972u,
449296169u,
584729435u,
3295180521u,
589654348u,
4256205129u,
3872811168u,
1159848257u,
3914402308u,
739056677u,
2654817235u,
2975781832u,
2945335776u,
2792662538u,
4124362519u,
1578034244u,
347127450u,
818851140u,
2127100315u,
2486499071u,
4198130806u,
1869105609u,
1961961717u,
1651285423u,
376774848u,
2681263019u,
1185959234u,
1674813864u,
32812913u,
3511671436u,
3250344299u,
2961919237u,
722029715u,
3677835234u,
3534013806u,
2896926420u,
2405611392u,
1523923100u,
538451356u,
2872548905u,
3122230170u,
337087364u,
2659340735u,
3849128055u,
556114376u,
1997152544u,
3761450839u,
3143779940u,
3256759779u,
2844565122u,
228442897u,
3589092287u,
786119294u,
4089515771u,
3720982051u,
1236422652u,
2002271241u,
98809947u,
1925281885u,
3856119646u,
3522402037u,
2119723860u,
3500067577u,
3688915105u,
443441159u,
1795715271u,
2772968214u,
921416086u,
4274010930u,
3123194886u,
4156595625u,
2153773382u,
1880645824u,
1783695477u,
2639075904u,
2369609874u,
2020298024u,
3035677150u,
20152938u,
3700162244u,
2301383878u,
704787941u,
1912605772u,
801557569u,
3080244537u,
2116665331u,
2452111071u,
3506260614u,
862540580u,
1275699972u,
66210903u,
106773917u,
3693457478u,
2402783622u,
1239121180u,
676003037u,
2603048829u,
1725001637u,
1220274379u,
24507488u,
903764486u,
4189545897u,
1702746631u,
3218068652u,
3306659191u,
790973134u,
1265526960u,
3431804268u,
3325211765u,
3605213000u,
2877687268u,
2252987926u,
2380945092u,
858624424u,
1002964636u,
1862801950u,
1624111941u,
2506763607u,
760658520u,
2734479345u,
3411969548u,
771362694u,
3655222003u,
2713412965u,
2617767046u,
1779451182u,
3696950253u,
1494085808u,
1423735456u,
800705781u,
3797847307u,
3518984231u,
196474988u,
1813335502u,
2243046583u,
2578707704u,
2592488572u,
4085007200u,
3609770110u,
2731535571u,
3190540952u,
1865257805u,
1804143221u,
3166875197u,
1184225570u,
2013135819u,
3678444101u,
2569887572u,
3559018477u,
3823772506u,
1537738480u,
713705243u,
792081862u,
1581340885u,
3140030205u,
3435723625u,
3093218524u,
3683643763u,
753869336u,
590258834u,
608176704u,
180732483u,
31365344u,
29753898u,
2899243456u,
1020423361u,
152655309u,
3809554076u,
2069071231u,
4000441303u,
3046501174u,
1897816893u,
1610689080u,
2580357110u,
255270539u,
3363490012u,
3711397066u,
3983751767u,
1725231855u,
172296475u,
2179003295u,
660196982u,
526538193u,
2137670317u,
2219075701u,
1987239722u,
856404486u,
2976933454u,
3678014122u,
2713682703u,
3329090001u,
2248358519u,
3254616418u,
1747030903u,
1620566606u,
880370315u,
2337236788u,
2883145755u
};
const int n = 768;
unsigned b[n] = {0};
unsigned v[] = {3, 5, 7};
const int size = sizeof(v)/sizeof(v[0]);
std::seed_seq s(v, v + size);
s.generate(b, b + n);
for (int i = 0; i < n; ++i)
assert(a[i] == b[i]);
}
}