summaryrefslogtreecommitdiff
path: root/numpy/random/tests
diff options
context:
space:
mode:
authorSebastian Berg <sebastian@sipsolutions.net>2019-05-28 10:09:13 -0700
committerGitHub <noreply@github.com>2019-05-28 10:09:13 -0700
commit22239d120f59826e8a2c758f4bee9893e835f511 (patch)
tree185c530dadfd28d5b47753de6f4985be61b8a1f2 /numpy/random/tests
parent5b06588ec34d2b29502059a4fd86e24da8ddfc96 (diff)
parent70d6293bf8ae48e68844d34def56e9fb59027433 (diff)
downloadnumpy-22239d120f59826e8a2c758f4bee9893e835f511.tar.gz
Merge pull request #13163 from mattip/randomgen
ENH: randomgen This merges randomgen into numpy, which was originally developed at https://github.com/bashtage/randomgen and provides a new and improved API for random number generation with much new and improved functionality.
Diffstat (limited to 'numpy/random/tests')
-rw-r--r--numpy/random/tests/data/__init__.py0
-rw-r--r--numpy/random/tests/data/dSFMT-testset-1.csv1001
-rw-r--r--numpy/random/tests/data/dSFMT-testset-2.csv1001
-rw-r--r--numpy/random/tests/data/mt19937-testset-1.csv1001
-rw-r--r--numpy/random/tests/data/mt19937-testset-2.csv1001
-rw-r--r--numpy/random/tests/data/pcg32-testset-1.csv1001
-rw-r--r--numpy/random/tests/data/pcg32-testset-2.csv1001
-rw-r--r--numpy/random/tests/data/pcg64-testset-1.csv1001
-rw-r--r--numpy/random/tests/data/pcg64-testset-2.csv1001
-rw-r--r--numpy/random/tests/data/philox-testset-1.csv1001
-rw-r--r--numpy/random/tests/data/philox-testset-2.csv1001
-rw-r--r--numpy/random/tests/data/threefry-testset-1.csv1001
-rw-r--r--numpy/random/tests/data/threefry-testset-2.csv1001
-rw-r--r--numpy/random/tests/data/xoshiro256-testset-1.csv1001
-rw-r--r--numpy/random/tests/data/xoshiro256-testset-2.csv1001
-rw-r--r--numpy/random/tests/data/xoshiro512-testset-1.csv1001
-rw-r--r--numpy/random/tests/data/xoshiro512-testset-2.csv1001
-rw-r--r--numpy/random/tests/test_direct.py579
-rw-r--r--numpy/random/tests/test_generator_mt19937.py2037
-rw-r--r--numpy/random/tests/test_generator_mt19937_regressions.py166
-rw-r--r--numpy/random/tests/test_random.py30
-rw-r--r--numpy/random/tests/test_randomstate.py1923
-rw-r--r--numpy/random/tests/test_randomstate_regression.py157
-rw-r--r--numpy/random/tests/test_regression.py3
-rw-r--r--numpy/random/tests/test_smoke.py894
25 files changed, 21793 insertions, 12 deletions
diff --git a/numpy/random/tests/data/__init__.py b/numpy/random/tests/data/__init__.py
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/numpy/random/tests/data/__init__.py
diff --git a/numpy/random/tests/data/dSFMT-testset-1.csv b/numpy/random/tests/data/dSFMT-testset-1.csv
new file mode 100644
index 000000000..9f3f68aee
--- /dev/null
+++ b/numpy/random/tests/data/dSFMT-testset-1.csv
@@ -0,0 +1,1001 @@
+seed, 1
+0, 4607719943344484518
+1, 4611291582431749820
+2, 4609448534071823958
+3, 4611106200950903790
+4, 4609580282971267356
+5, 4609720762470045007
+6, 4607636870422133563
+7, 4611678836133173816
+8, 4610735809705346030
+9, 4608789817543785341
+10, 4610393651369520670
+11, 4611623758339670553
+12, 4608444108616433164
+13, 4607465458608330898
+14, 4610235165931416513
+15, 4608103709635697272
+16, 4608100588970381609
+17, 4608641074646810943
+18, 4608616221842668388
+19, 4607549343270027634
+20, 4610344140656206312
+21, 4610535464314418457
+22, 4611312430982209353
+23, 4607401331162512449
+24, 4609116099984352425
+25, 4611257698187747276
+26, 4607645174989853474
+27, 4608837854111428888
+28, 4608691299413198001
+29, 4608930266190921041
+30, 4608332808182207925
+31, 4608421484748440698
+32, 4608383650014337452
+33, 4611545817730524178
+34, 4611496890204636496
+35, 4610861924086585884
+36, 4608194351754852419
+37, 4610283774852204513
+38, 4609474926233319727
+39, 4608727547276598994
+40, 4609717674488922238
+41, 4609423015229480073
+42, 4609349380679114027
+43, 4610751388265382808
+44, 4607733281112877867
+45, 4610591846531581004
+46, 4610735578621585065
+47, 4611251806424951188
+48, 4609460646876881407
+49, 4611551161354804803
+50, 4611249469634822485
+51, 4608821959551777081
+52, 4610052971574464565
+53, 4607777094091618436
+54, 4610851094220499210
+55, 4607702337070583856
+56, 4611414385520522876
+57, 4611576460026085858
+58, 4611473034943841786
+59, 4608897639026169673
+60, 4607883926313481761
+61, 4608797023994348324
+62, 4610894444453627505
+63, 4608376332448068935
+64, 4609893849888152414
+65, 4610202941918038529
+66, 4611056233415559924
+67, 4610877544761426248
+68, 4610994780372079388
+69, 4609067797141254153
+70, 4610982998126297925
+71, 4610789518257002641
+72, 4610598903890296442
+73, 4608025197953180744
+74, 4610185556158198401
+75, 4608809010429661575
+76, 4608768447244428523
+77, 4609124503281513660
+78, 4611101360372917414
+79, 4611042322702996474
+80, 4610858523716073186
+81, 4610375945852385997
+82, 4608483154301089968
+83, 4607798251963762687
+84, 4609119835265156007
+85, 4609188963843200093
+86, 4607266275697659547
+87, 4610923287424505039
+88, 4609618008081028402
+89, 4608201696292514469
+90, 4611530915051149734
+91, 4607364802882841466
+92, 4611236492431573193
+93, 4610807042893722656
+94, 4610080772943107179
+95, 4608570487813674878
+96, 4610901704116296546
+97, 4610535849683417477
+98, 4609487776344637464
+99, 4607684048114742415
+100, 4609756145565247020
+101, 4609839920313018364
+102, 4607300199263955605
+103, 4608349701001143604
+104, 4608563526536655950
+105, 4608211471894692660
+106, 4611561832400682724
+107, 4607607690303987255
+108, 4609884829632656291
+109, 4610554863807344395
+110, 4609913857729390656
+111, 4608533735726217242
+112, 4611205573734963697
+113, 4608825835576863771
+114, 4611237004326669392
+115, 4609254174450399374
+116, 4607622879864982635
+117, 4610819003887309229
+118, 4607698308712315302
+119, 4607833259972583494
+120, 4607681632288287295
+121, 4607910755187354207
+122, 4611122191561013257
+123, 4611656235846796861
+124, 4610565432604340253
+125, 4610908827351842030
+126, 4611268340320100590
+127, 4609313851656821466
+128, 4608528427564169020
+129, 4608200570336395038
+130, 4610538403125154877
+131, 4608888436053455398
+132, 4611543165544411944
+133, 4610250257231662522
+134, 4609297917742740245
+135, 4610400815978769483
+136, 4610528657337572565
+137, 4610705415667566712
+138, 4611077904559980731
+139, 4609927849369442287
+140, 4609397759777226314
+141, 4609010898016502992
+142, 4609120772081864228
+143, 4607237141609153161
+144, 4610571899308981431
+145, 4609008993363640801
+146, 4610287560785901157
+147, 4608623756174376020
+148, 4608653243870415213
+149, 4609547819331301107
+150, 4609673847833623842
+151, 4608235666485521661
+152, 4610114805542994107
+153, 4610479707694856806
+154, 4609103555741806169
+155, 4608500007602890176
+156, 4610672856146553685
+157, 4611610717675563449
+158, 4610730068759051595
+159, 4608685224971234052
+160, 4609413185190097208
+161, 4608897450787802174
+162, 4607186845514749512
+163, 4607348569795042779
+164, 4611009214373065786
+165, 4609635836233645619
+166, 4610977547720639382
+167, 4610180471225090534
+168, 4608711346241655575
+169, 4608627118356010890
+170, 4611222988628267196
+171, 4610585467803239650
+172, 4608953295299223634
+173, 4610267719343621921
+174, 4608384815012305523
+175, 4610760760005158447
+176, 4609888294496573856
+177, 4608487712307397941
+178, 4610046813921597302
+179, 4607901372889700267
+180, 4611648045743259157
+181, 4611287922111507955
+182, 4609242748471226007
+183, 4607755201380013067
+184, 4611417807283839436
+185, 4609947268752725748
+186, 4610889795243117380
+187, 4610682734427309711
+188, 4609430103755831273
+189, 4610392513282878252
+190, 4608028130931026108
+191, 4609354927353821574
+192, 4607999262827197226
+193, 4608772265877184447
+194, 4611465843018312306
+195, 4607857062574325894
+196, 4610666426888867633
+197, 4610600830920094283
+198, 4609205915408410545
+199, 4607853688411879209
+200, 4607747795491854335
+201, 4608262126937716822
+202, 4611534185487112177
+203, 4610074422869556166
+204, 4609237471248388861
+205, 4609177882315404739
+206, 4607287155741697257
+207, 4611476554139586317
+208, 4609517208333105115
+209, 4607319309983389553
+210, 4608526076922090888
+211, 4610748479257207053
+212, 4609931527304084444
+213, 4608009987636217635
+214, 4610407130291313714
+215, 4608891664598965696
+216, 4610296160139884006
+217, 4611484560328101663
+218, 4611019501503618978
+219, 4610246433435823295
+220, 4608562757718917889
+221, 4607471913719777131
+222, 4611613370049530904
+223, 4608319297993304206
+224, 4607745017639172981
+225, 4609731861577957712
+226, 4609663467149266458
+227, 4609543591294589508
+228, 4608524115958204496
+229, 4611293271186698245
+230, 4610645493162693253
+231, 4607841282620685061
+232, 4608714555579084575
+233, 4608149900642705668
+234, 4609881346718346991
+235, 4609652423006025080
+236, 4610576204477932347
+237, 4608419142720251589
+238, 4609292870725527035
+239, 4607915743890091921
+240, 4610631007573258876
+241, 4611091737638956363
+242, 4610866832498942602
+243, 4608679206316379049
+244, 4611254040795706209
+245, 4608564985000526959
+246, 4609448881222436994
+247, 4611606861023266002
+248, 4608930513670169902
+249, 4607323764955464423
+250, 4607288181905687970
+251, 4610373160370490855
+252, 4608411794278861897
+253, 4610212894218458057
+254, 4610694380708700429
+255, 4609922533346642803
+256, 4609392056590729641
+257, 4609803732845487397
+258, 4608878803170308012
+259, 4611524443328391151
+260, 4608174079771415727
+261, 4607408890033763317
+262, 4607845699541088935
+263, 4611555920103058967
+264, 4607479194613061911
+265, 4607653663534995980
+266, 4610070893479029228
+267, 4611538868870820080
+268, 4608567899678704260
+269, 4608770231079288078
+270, 4610411454914405807
+271, 4607820664883172463
+272, 4610714780751262327
+273, 4607194611952450391
+274, 4609087763682578279
+275, 4608165254026394594
+276, 4609234355157830083
+277, 4609341303623897409
+278, 4607843258265880283
+279, 4609385462693327627
+280, 4610305709185463397
+281, 4607607148427164960
+282, 4608714881122218799
+283, 4609651616092383148
+284, 4609231203213271499
+285, 4611257982347817477
+286, 4610152698091154688
+287, 4608144133423192484
+288, 4610573628352437761
+289, 4608544728261953288
+290, 4610198309467009097
+291, 4610449593868273119
+292, 4610593290392091594
+293, 4609046058809591309
+294, 4611622292530238189
+295, 4610657414068263882
+296, 4611165834719653845
+297, 4610350928332385108
+298, 4611352448760095628
+299, 4609948012409647959
+300, 4610309189747788666
+301, 4607755081207867022
+302, 4610231879852064105
+303, 4607888125265337265
+304, 4609172092280206898
+305, 4608588257784565842
+306, 4607741678424158070
+307, 4609025150930086850
+308, 4609393539064468217
+309, 4610911632660167908
+310, 4610958667007850644
+311, 4611286666277101605
+312, 4609804183682242390
+313, 4611608707704948262
+314, 4609669610113267167
+315, 4607666787328441261
+316, 4607581099645179700
+317, 4610190388918185110
+318, 4610216151360211572
+319, 4608284982213104796
+320, 4609043908200033150
+321, 4610094358636174240
+322, 4607727851642292863
+323, 4607748339680477190
+324, 4610333796608461237
+325, 4611630659133526098
+326, 4611011836822995398
+327, 4611271586336335851
+328, 4608676990846072419
+329, 4610486194528414452
+330, 4607576606876065603
+331, 4607719568700291080
+332, 4608551235063435831
+333, 4611011581816455613
+334, 4608841433006333809
+335, 4609590566174099924
+336, 4610751108417575356
+337, 4609783802139185311
+338, 4610078674097919534
+339, 4608133838483219458
+340, 4609277956691541130
+341, 4608489591310323203
+342, 4608190218485836055
+343, 4611079531841410411
+344, 4608880618309483643
+345, 4608911948674088293
+346, 4611291894381153496
+347, 4608451717289459361
+348, 4608796294882212937
+349, 4608414460486049632
+350, 4607422609721232463
+351, 4608080483385313266
+352, 4607622634488318995
+353, 4609289604313013439
+354, 4609239936097680379
+355, 4608372018123900887
+356, 4610702814261825804
+357, 4611274091783983647
+358, 4611215484124931059
+359, 4608990421919168365
+360, 4609097190054835106
+361, 4610994750415795356
+362, 4611072443902954170
+363, 4608952917718970557
+364, 4608900180943861654
+365, 4608934424322310689
+366, 4609731940535270405
+367, 4610297241526025992
+368, 4608524744985785409
+369, 4610233647335282974
+370, 4609397840502965617
+371, 4609931050226720744
+372, 4607823742164438535
+373, 4607386223202154150
+374, 4611077706407577954
+375, 4608540055157729754
+376, 4610737951147572257
+377, 4610902929285966658
+378, 4611385693211960164
+379, 4607224622379354821
+380, 4609166781986849209
+381, 4608748083335025668
+382, 4610443657454469430
+383, 4610468401119056286
+384, 4610937884247828753
+385, 4609084940396193513
+386, 4611415358123142084
+387, 4610501805353766962
+388, 4607767036448986638
+389, 4607461223165192234
+390, 4608226484980255663
+391, 4611607256659641032
+392, 4609945211367732974
+393, 4609006453263783302
+394, 4610265844375613630
+395, 4607694615392738521
+396, 4608606212547814938
+397, 4610034239111814504
+398, 4610103751968466900
+399, 4611088505838050253
+400, 4608851769231884474
+401, 4610288514235425111
+402, 4608505539036108714
+403, 4611453738759382658
+404, 4611101647329150173
+405, 4607983202842737743
+406, 4607628593913051809
+407, 4610817169808213622
+408, 4610274104936495796
+409, 4607686898188473999
+410, 4611494545938384459
+411, 4609445238317096124
+412, 4609809658023272942
+413, 4610395993443671939
+414, 4609532016275791584
+415, 4610018501692092651
+416, 4608683763430851439
+417, 4608548880896401248
+418, 4610478349829709585
+419, 4607855690965045385
+420, 4609679774972563395
+421, 4609301972366993458
+422, 4609957828433462989
+423, 4611601276026033182
+424, 4610886414042292178
+425, 4610540517589250995
+426, 4609329807459066933
+427, 4611012060649555364
+428, 4611004988464520281
+429, 4610092518739796845
+430, 4608982525313436661
+431, 4610220581774992574
+432, 4608389110412341488
+433, 4610577194017978099
+434, 4607777219986546519
+435, 4608552325706694521
+436, 4609384775042120780
+437, 4610819470183619029
+438, 4608862514454376763
+439, 4608050912492519261
+440, 4609954958938789219
+441, 4611451357502982166
+442, 4607476785936630269
+443, 4611329691194458319
+444, 4610683876885297263
+445, 4608922438780754530
+446, 4607347319284557650
+447, 4610212564213298006
+448, 4607187736152210274
+449, 4607821132969264993
+450, 4610701944842365016
+451, 4609138892484188991
+452, 4607579978932469946
+453, 4608297026731285373
+454, 4609117946354613867
+455, 4609873371753866995
+456, 4609883036162181473
+457, 4610617143057865264
+458, 4609705966715129773
+459, 4609266086686667759
+460, 4611092203109148192
+461, 4607277668644988197
+462, 4610243051742855164
+463, 4611488200475462773
+464, 4610159190694085398
+465, 4607187122077884953
+466, 4609178002227614028
+467, 4607200609172450908
+468, 4607203109970409745
+469, 4610157519627986095
+470, 4608168608616624151
+471, 4607556712879928934
+472, 4610602971628266891
+473, 4607272386871519909
+474, 4609226601189759664
+475, 4608821958178910465
+476, 4610337925540682923
+477, 4607756826141445338
+478, 4610670714123277518
+479, 4609997633318663199
+480, 4610992528318514467
+481, 4610508873379935121
+482, 4610548944839799582
+483, 4608576872646763539
+484, 4611475238517289488
+485, 4609969545809504006
+486, 4611604653736723262
+487, 4610513754499061149
+488, 4610047791400434915
+489, 4610466779122303079
+490, 4609199569907073109
+491, 4611355331378329938
+492, 4609211256613089457
+493, 4611345984656025190
+494, 4609276744577281463
+495, 4610677520254288398
+496, 4611565920468553537
+497, 4608887769347254935
+498, 4607891688277052029
+499, 4611210417809931519
+500, 4609181196197018924
+501, 4608620849445253589
+502, 4610338756450099522
+503, 4610235666137930968
+504, 4610190689620274242
+505, 4608156139098624503
+506, 4610233351376219666
+507, 4611116196066412550
+508, 4611244546095227734
+509, 4608354486449139402
+510, 4608722837522685541
+511, 4607298792335449598
+512, 4610940117180049531
+513, 4609905783847698405
+514, 4611068115688450709
+515, 4609567280627055335
+516, 4609668102454567333
+517, 4608575291283631952
+518, 4608606739858036458
+519, 4609920659405064132
+520, 4609633855399730395
+521, 4607420399082287137
+522, 4607497830797814837
+523, 4608734929795542569
+524, 4611677103224173563
+525, 4609895185651955231
+526, 4608551100268458835
+527, 4608794936863357442
+528, 4608839444940253689
+529, 4609723875823547919
+530, 4609134168731540965
+531, 4610864297289180458
+532, 4609561568240290174
+533, 4609455706988469654
+534, 4610110730269692806
+535, 4607590724900811004
+536, 4609841446856073581
+537, 4607519144944801539
+538, 4610958924924618965
+539, 4608058978781928209
+540, 4608930736822030783
+541, 4610339624224904683
+542, 4611268940884582276
+543, 4611614440252938509
+544, 4610283933065539718
+545, 4610827563929259801
+546, 4610238281320018148
+547, 4609068702417082470
+548, 4609965625349945622
+549, 4610567655464689798
+550, 4609517999871284092
+551, 4608853313183377285
+552, 4608597386123068580
+553, 4608596804275711127
+554, 4608806942254133750
+555, 4611595740982862812
+556, 4610653226348519116
+557, 4610010878229382699
+558, 4611430012536690008
+559, 4608194334909286956
+560, 4609770785529395235
+561, 4609636612234158840
+562, 4610467762650198285
+563, 4611250113292757754
+564, 4611123483515753501
+565, 4610256050464540468
+566, 4611554812085476534
+567, 4609545597507432057
+568, 4610251629953739706
+569, 4608097940038860692
+570, 4608939256004427493
+571, 4609549477949346267
+572, 4607856563525396488
+573, 4608407566119329436
+574, 4610977065049540740
+575, 4608677612836947043
+576, 4611670385382852661
+577, 4609169914628845192
+578, 4608385528780825832
+579, 4608431699759708725
+580, 4610213210579325967
+581, 4607790519129120154
+582, 4611460475578903177
+583, 4611645204412117197
+584, 4611045465835867018
+585, 4610795725227740679
+586, 4607610666986980838
+587, 4607713533366355938
+588, 4608008411737790225
+589, 4607218032541409981
+590, 4610712747455657843
+591, 4607322986186115065
+592, 4608609778168478040
+593, 4609117986895835630
+594, 4608387138944308707
+595, 4609405159006321483
+596, 4609201389487900126
+597, 4610814010656557822
+598, 4610461402205528089
+599, 4608856848982780180
+600, 4610009661369407408
+601, 4609531046728456306
+602, 4608781638378145485
+603, 4611071218907304246
+604, 4607718364365206169
+605, 4610766522014845193
+606, 4610418511682022913
+607, 4611489866910598987
+608, 4611024768525348505
+609, 4608411227740737072
+610, 4608347021514952714
+611, 4607229154687220486
+612, 4609527688395331186
+613, 4608610487126715045
+614, 4610163014754346271
+615, 4610119594096556803
+616, 4609099103543638986
+617, 4607960911715387937
+618, 4610543345562112354
+619, 4611673200269784439
+620, 4607890122556287450
+621, 4610510919142595773
+622, 4611000945873569885
+623, 4609861297670464893
+624, 4607365464269028252
+625, 4610263820456779466
+626, 4608382757430988076
+627, 4608592826360850405
+628, 4607897223655826864
+629, 4608783406301942627
+630, 4610831809342653056
+631, 4610592838071858481
+632, 4607625427481844846
+633, 4610803200293531160
+634, 4607315949328468373
+635, 4609568473332490124
+636, 4608018723588381940
+637, 4610473680670701003
+638, 4608867424437758236
+639, 4607226771732395005
+640, 4607648878101783522
+641, 4608407495823699878
+642, 4609303470297933457
+643, 4607995287639912115
+644, 4610604756706603303
+645, 4608065328364362400
+646, 4607659009213858799
+647, 4609407180393559403
+648, 4610161232799622667
+649, 4608312339248283632
+650, 4611365830215244879
+651, 4609241343071166241
+652, 4607187426157508336
+653, 4611008486844877795
+654, 4609348293209960853
+655, 4611430342690450936
+656, 4610022123422557819
+657, 4610662613803950933
+658, 4610421175429479085
+659, 4609631547889552562
+660, 4609940555785407216
+661, 4609822163096232669
+662, 4608970136612861659
+663, 4609427082274890719
+664, 4608697401879465484
+665, 4611207783165609518
+666, 4611373087590380940
+667, 4610545384528497527
+668, 4607694071454287047
+669, 4607913509258771897
+670, 4607226952976335318
+671, 4611367164497924691
+672, 4610773799850733403
+673, 4608923576905855388
+674, 4610829132227252858
+675, 4611539466506594954
+676, 4607450455252831956
+677, 4607924760556738513
+678, 4609257351177318999
+679, 4607886491020993167
+680, 4607262386448907585
+681, 4608805527475164058
+682, 4608519384875417362
+683, 4609768003609528793
+684, 4607990620996706344
+685, 4608000541499168509
+686, 4607514221391064237
+687, 4610596308708149427
+688, 4608457358343713720
+689, 4611109413177548323
+690, 4609292098957449828
+691, 4608275497070553256
+692, 4609949308659603960
+693, 4610508332440425814
+694, 4610523421224858005
+695, 4611628503654168653
+696, 4608988043865917565
+697, 4609452807254068291
+698, 4611008104380823402
+699, 4609415493514583781
+700, 4608204811849219551
+701, 4608154991732011594
+702, 4609565684575358357
+703, 4607201300980991047
+704, 4611578953897989322
+705, 4608949284388541303
+706, 4608953402339590043
+707, 4611094520261253641
+708, 4611564299263181877
+709, 4611244613212746921
+710, 4607665698546290637
+711, 4609929742865966113
+712, 4608756528459788870
+713, 4608559801324682100
+714, 4611161313083363936
+715, 4610640544822605367
+716, 4610461950314271130
+717, 4608429389531989501
+718, 4610594975443340868
+719, 4610653541215203471
+720, 4610354404384656514
+721, 4611322467270517926
+722, 4609004358268238303
+723, 4610113217342068535
+724, 4607247286313434436
+725, 4607936058322365025
+726, 4607498677954044120
+727, 4607367643972642434
+728, 4610903724213995603
+729, 4608398398619525170
+730, 4609011100867415968
+731, 4609286350498400836
+732, 4610564846286379047
+733, 4610610842418549113
+734, 4609379950548700715
+735, 4608749477629127198
+736, 4609389534628643041
+737, 4609709510894589547
+738, 4609720477301256427
+739, 4610433170873472685
+740, 4607581786915955136
+741, 4610426993537088574
+742, 4609893496842706786
+743, 4608182222083733544
+744, 4607415409292672163
+745, 4608909799371727180
+746, 4609682438519448644
+747, 4609837420608110159
+748, 4607722492204198941
+749, 4608063142644927447
+750, 4611212896211946065
+751, 4610459279330601000
+752, 4610766525803719281
+753, 4610541719260518609
+754, 4608446538192511629
+755, 4608529268885531628
+756, 4607702152237957857
+757, 4608797703031075472
+758, 4607439116134819826
+759, 4608311115301487628
+760, 4611675179452768396
+761, 4608076597967526423
+762, 4611585923502702782
+763, 4611007505903425519
+764, 4610334401882712716
+765, 4611292864862708587
+766, 4610520603991775838
+767, 4610790439348561649
+768, 4608020323209861832
+769, 4609132354146195150
+770, 4611648991029158429
+771, 4608415373761338387
+772, 4611222889759456059
+773, 4610394879407915891
+774, 4611223274533537520
+775, 4611048920373264726
+776, 4611203040226595031
+777, 4608581225592953052
+778, 4607944132899105268
+779, 4610553416357950208
+780, 4609183189134981159
+781, 4610931403284842449
+782, 4609626797792255137
+783, 4608437008274383407
+784, 4608841271194024119
+785, 4609511843950082189
+786, 4608432804080683600
+787, 4607886713946305196
+788, 4610350555892554303
+789, 4611041162152526452
+790, 4608810036185927099
+791, 4609731609025465382
+792, 4608387458587420116
+793, 4608846429123315125
+794, 4610376323596472588
+795, 4609423912646885032
+796, 4609218872949994167
+797, 4611375967003041069
+798, 4609485140993387628
+799, 4607604870717557062
+800, 4609495797464442279
+801, 4611456949409319675
+802, 4610344977769413626
+803, 4610598065942935600
+804, 4608013012863891262
+805, 4610252455143552284
+806, 4607700593028756519
+807, 4610045641566183312
+808, 4609480926180737252
+809, 4610275596338864080
+810, 4607659695464558950
+811, 4607219197645073589
+812, 4608177295501330522
+813, 4611273956331899579
+814, 4610913813005660249
+815, 4608470207120093898
+816, 4608174217124512103
+817, 4610065364926597101
+818, 4607349317207213784
+819, 4607602167222023985
+820, 4607657145979677117
+821, 4611508729708873431
+822, 4607908717595303714
+823, 4609727931398518344
+824, 4609540956592359987
+825, 4610440481396242417
+826, 4611346585992438567
+827, 4611152612229187917
+828, 4610384157247730087
+829, 4610830126611132722
+830, 4610272123470087431
+831, 4607234503905390991
+832, 4610613653079230069
+833, 4609179215008588124
+834, 4608441295871321425
+835, 4608116436734160239
+836, 4607605033373857689
+837, 4610599359267200688
+838, 4611379096030431268
+839, 4609842285031861233
+840, 4611250379332137731
+841, 4608487405142537379
+842, 4607380789043538335
+843, 4609546285413174259
+844, 4608919052624376420
+845, 4611474363794717141
+846, 4611079221421189606
+847, 4607871497110868045
+848, 4608251852430693481
+849, 4611271625089563201
+850, 4608142282722604751
+851, 4610614961087854140
+852, 4611030874745849847
+853, 4609674534508351596
+854, 4610748124279118172
+855, 4610214076525417764
+856, 4608915989016466776
+857, 4611186209375381383
+858, 4609729165373960964
+859, 4608171107224247283
+860, 4608322267844345836
+861, 4611385726702876896
+862, 4607526082606428148
+863, 4609300797912528830
+864, 4607995042613073018
+865, 4609544162095522243
+866, 4607273392907536721
+867, 4610915254133616443
+868, 4608528592480458486
+869, 4611065489354804147
+870, 4610750286707033259
+871, 4609777244768435300
+872, 4610807148417457906
+873, 4607877316209555589
+874, 4610316726265842451
+875, 4608771732565061950
+876, 4611471267762612145
+877, 4607984815868159369
+878, 4608744077489931245
+879, 4611032300367986435
+880, 4609572801223705776
+881, 4607388928679638867
+882, 4610440380910085523
+883, 4611677400759288526
+884, 4608231223120382380
+885, 4609826308636672129
+886, 4610729764513821105
+887, 4608945691565841376
+888, 4608283276108322908
+889, 4611090204591740692
+890, 4610600988861462466
+891, 4608814357404053556
+892, 4611331328900205001
+893, 4610440474296736006
+894, 4607431388306045801
+895, 4610821334292221218
+896, 4608554210663333875
+897, 4609824397495829498
+898, 4607541211343519985
+899, 4608435017263349928
+900, 4607219271691108353
+901, 4608430070452421044
+902, 4609082847439943417
+903, 4610866784520449850
+904, 4608287501071307688
+905, 4609218510235145503
+906, 4608114112360957267
+907, 4609922412275378983
+908, 4608601574612929512
+909, 4608063236537296892
+910, 4610507352144992045
+911, 4610831100303954067
+912, 4610989778846895898
+913, 4611131006465079227
+914, 4607610719457154999
+915, 4610658650342157966
+916, 4607418499615550301
+917, 4610402445180375078
+918, 4610463803051786556
+919, 4610040245423397003
+920, 4610291132556872432
+921, 4610915180727115233
+922, 4607198239226330244
+923, 4610719993407015954
+924, 4608790436210431943
+925, 4611518788065155885
+926, 4609410806758155597
+927, 4610354727542013410
+928, 4609032496183417847
+929, 4607612835462448389
+930, 4609119308314247716
+931, 4610676295665807893
+932, 4610030018059715751
+933, 4610396681520935881
+934, 4610115299841718605
+935, 4610531703556384068
+936, 4607313656834232832
+937, 4607826054856970203
+938, 4609717410497090129
+939, 4609043343821435147
+940, 4607629724646231370
+941, 4611347190635269674
+942, 4607431356324177025
+943, 4609743147159956874
+944, 4608919951624732686
+945, 4608549836830011507
+946, 4609835749585271216
+947, 4610001878208091800
+948, 4607727638454636808
+949, 4608140523490695322
+950, 4610951723878037203
+951, 4609561113218416843
+952, 4607375879120504969
+953, 4610968421496640577
+954, 4608729663137359994
+955, 4611521561048982293
+956, 4607647181466306462
+957, 4608815536941397702
+958, 4611410078681334217
+959, 4610883601143579986
+960, 4609217767853028115
+961, 4610569694955441160
+962, 4608142872889589658
+963, 4609078496262967192
+964, 4610075946790752678
+965, 4607952350453678296
+966, 4610919620741525096
+967, 4611050224420434596
+968, 4608163018441029734
+969, 4611368242936987963
+970, 4607644493316907613
+971, 4611292201819050900
+972, 4610919228494056420
+973, 4607225037781465524
+974, 4609803354294636294
+975, 4610012640039408504
+976, 4610054964621136538
+977, 4609178240405976665
+978, 4607687932449852507
+979, 4609284420963602445
+980, 4609123874172501167
+981, 4608282636137081729
+982, 4609729376153713229
+983, 4611206065074370636
+984, 4609819396180228727
+985, 4610891933717707670
+986, 4608390654319867654
+987, 4610530001352182832
+988, 4608968440000980355
+989, 4611276663454436837
+990, 4609638657758409036
+991, 4610986200094730228
+992, 4610734380577234553
+993, 4609408663096464249
+994, 4609878290485950846
+995, 4607522064640469547
+996, 4610791378999926894
+997, 4607540164715119602
+998, 4609346418539511860
+999, 4611057822391293948
diff --git a/numpy/random/tests/data/dSFMT-testset-2.csv b/numpy/random/tests/data/dSFMT-testset-2.csv
new file mode 100644
index 000000000..2ec2d7a51
--- /dev/null
+++ b/numpy/random/tests/data/dSFMT-testset-2.csv
@@ -0,0 +1,1001 @@
+seed, 123456789
+0, 4611184391270596398
+1, 4607748002806405513
+2, 4610950593283603895
+3, 4608090221984835117
+4, 4608620401509188549
+5, 4608933259318787038
+6, 4609013189947794152
+7, 4610981701838014712
+8, 4607749361849391199
+9, 4607937126452632796
+10, 4607787877636103702
+11, 4610534911848167216
+12, 4610758085486021829
+13, 4608376900672555174
+14, 4611475749905869564
+15, 4610499914926478618
+16, 4610900925684457179
+17, 4609184136046668572
+18, 4610480821748015478
+19, 4609898134786890046
+20, 4610017288264709787
+21, 4610945461469807520
+22, 4611377383751342990
+23, 4610945102533068783
+24, 4611669662318553242
+25, 4609191925356202514
+26, 4607369493394647937
+27, 4610171428966243908
+28, 4608117572388953111
+29, 4608266910229155519
+30, 4608559463354581151
+31, 4608291596231703883
+32, 4609993154230249063
+33, 4608158820656759750
+34, 4607825861011031752
+35, 4611091529260321033
+36, 4609803558980700204
+37, 4610892045184692457
+38, 4607844754686911799
+39, 4609239584278564809
+40, 4608975935937490223
+41, 4611186452462884146
+42, 4610644474758878544
+43, 4608188546959932195
+44, 4610317408616093972
+45, 4607827178108179262
+46, 4611275432938764949
+47, 4608511443742655969
+48, 4607200952336491646
+49, 4609727773590041393
+50, 4609137674464229063
+51, 4611529391150713249
+52, 4607446200291229812
+53, 4608618724431091553
+54, 4608231197118968153
+55, 4609848377535763472
+56, 4609769454787363651
+57, 4609093431634418146
+58, 4610941233823434235
+59, 4609301175512188901
+60, 4610884340334734656
+61, 4610063958683836346
+62, 4607897080185028324
+63, 4610305504370096344
+64, 4609499707572786607
+65, 4609874865902334026
+66, 4610351583670684094
+67, 4607292638794148255
+68, 4609412782688385863
+69, 4610390851314330496
+70, 4610340712140767101
+71, 4611109929809487388
+72, 4608431958302562464
+73, 4611491800847619506
+74, 4611664179902108071
+75, 4609243488780021515
+76, 4611114015923144350
+77, 4608524512724098287
+78, 4610450327089558934
+79, 4608720370826377375
+80, 4609572763010883699
+81, 4610381056495781763
+82, 4610005210825690556
+83, 4610341565220388232
+84, 4609034688757121677
+85, 4608823563858030255
+86, 4607971981785212736
+87, 4608714648124969040
+88, 4608968779454607977
+89, 4607272316660152324
+90, 4610748035362895446
+91, 4611319709331049410
+92, 4611390662594804501
+93, 4610054939662414847
+94, 4610394601776085983
+95, 4611424622746948620
+96, 4609395571329163407
+97, 4608527159228147662
+98, 4608379506646233343
+99, 4608996098073467200
+100, 4609633861067625056
+101, 4609387288473331641
+102, 4609369354653726335
+103, 4609305386464755625
+104, 4609085462578529471
+105, 4607213117834450226
+106, 4608676147693465985
+107, 4609894016428056597
+108, 4610808023909042858
+109, 4608152398284126687
+110, 4608864655829389907
+111, 4608853043279974421
+112, 4609998495057236534
+113, 4610971344400740897
+114, 4610947677840469570
+115, 4608888205458648733
+116, 4607306226266885750
+117, 4609476897174960733
+118, 4609298769587075756
+119, 4608046849854182276
+120, 4607709982476583693
+121, 4608905629015127110
+122, 4610027478304152622
+123, 4610378827605636632
+124, 4609168469605184889
+125, 4608424320664524511
+126, 4611224145925927248
+127, 4610598390440508158
+128, 4607548101463088366
+129, 4610445109429344448
+130, 4608982837349247842
+131, 4611526772283530460
+132, 4609215133306156120
+133, 4610747257006687691
+134, 4611305960482481336
+135, 4610602687315818756
+136, 4607839670910202130
+137, 4610527601541091852
+138, 4611462737727028786
+139, 4609212169757271808
+140, 4608447721028771557
+141, 4608224903291976145
+142, 4607298632533980318
+143, 4607975637289743494
+144, 4608776340673956742
+145, 4608578170133208214
+146, 4611177429384019220
+147, 4607665628038835535
+148, 4609531011383000577
+149, 4609360969802432085
+150, 4609908488618542164
+151, 4607366945146869514
+152, 4610136614778041377
+153, 4611168569218164361
+154, 4610462572118833671
+155, 4608070981696376487
+156, 4611058778037833630
+157, 4608159294705821382
+158, 4607530053661949689
+159, 4609136441084496096
+160, 4609331241894336822
+161, 4611313107630037707
+162, 4607957053472625207
+163, 4609675126838719650
+164, 4609482958203648215
+165, 4609691585561697624
+166, 4611475423312731438
+167, 4611412076067906505
+168, 4610429355560523848
+169, 4610625875093760541
+170, 4607241368914269823
+171, 4608589893979475221
+172, 4610073186156188115
+173, 4607291233411155158
+174, 4607675047628278616
+175, 4610869395774400226
+176, 4610232438803745722
+177, 4611554162813131112
+178, 4611642473714833781
+179, 4610563419014907913
+180, 4608459192490850885
+181, 4610780149188594220
+182, 4608960376226045768
+183, 4609069361322693819
+184, 4607256923555182400
+185, 4608474664242579394
+186, 4610207389506744572
+187, 4609112003475072746
+188, 4609240603140788354
+189, 4607525348408117354
+190, 4611149396864007205
+191, 4609114686465130118
+192, 4608849128028589904
+193, 4607248401924217556
+194, 4611387244175010347
+195, 4610567855974092668
+196, 4608169346845917282
+197, 4608490452199719856
+198, 4611203596728963611
+199, 4609287639795895008
+200, 4611614031789088265
+201, 4607236671819565824
+202, 4607466608820858068
+203, 4609639323480231358
+204, 4611254610116912557
+205, 4608807229543638034
+206, 4608381564380368174
+207, 4607428682272410485
+208, 4611229637925604134
+209, 4609236526826003496
+210, 4608889880949328886
+211, 4611135901473627148
+212, 4609923185324027506
+213, 4608879482743843897
+214, 4607662449177713187
+215, 4609980811569949840
+216, 4608275147595190524
+217, 4610799005466054235
+218, 4607667917597769158
+219, 4610185589593486163
+220, 4607529819757965470
+221, 4608839547249506178
+222, 4607706145147011973
+223, 4610988495472186250
+224, 4611534361958731542
+225, 4611641549824093970
+226, 4607316484858856298
+227, 4608641757303921184
+228, 4609375357848069574
+229, 4610565635665894453
+230, 4611147322350665952
+231, 4610071054475069545
+232, 4608886005124134993
+233, 4611384240695070553
+234, 4609556577749744408
+235, 4607688273402525356
+236, 4609395656487625483
+237, 4607920617948366178
+238, 4608233544953726639
+239, 4607736865102992897
+240, 4611554956498550667
+241, 4608735997467283056
+242, 4608499613076219431
+243, 4607926707839352263
+244, 4607349468190181214
+245, 4607855564980078814
+246, 4608566548361033733
+247, 4608689878198670581
+248, 4607485839302113425
+249, 4611493753178685166
+250, 4608566613320387204
+251, 4609743179886038389
+252, 4610508594994820223
+253, 4608995913792958562
+254, 4610248353463386070
+255, 4609788192124211795
+256, 4610619330306161425
+257, 4610873599325465005
+258, 4607324385499645328
+259, 4610611165167596515
+260, 4608006298637673371
+261, 4608540339048264499
+262, 4609631136716349669
+263, 4608685013736282276
+264, 4607363759784022848
+265, 4609492611310929004
+266, 4607780070180818716
+267, 4611531753698196550
+268, 4609227266216837458
+269, 4609211002065400677
+270, 4610668395253295080
+271, 4609134381345731597
+272, 4609382192034225627
+273, 4607208308209034488
+274, 4610579328733327647
+275, 4608921603525338555
+276, 4608290209927931669
+277, 4610866583781415461
+278, 4608182329361248100
+279, 4611648549813945436
+280, 4608601920453704621
+281, 4607406218324299637
+282, 4610748358143595351
+283, 4607437422367397844
+284, 4610299319830347312
+285, 4607992330520188137
+286, 4607658701765777668
+287, 4610721959305012250
+288, 4608971493894533044
+289, 4610010722223631500
+290, 4611050493332836673
+291, 4611164520867402836
+292, 4610619993846650787
+293, 4610600062391983254
+294, 4610986071470687711
+295, 4607815296700712791
+296, 4608678841251990428
+297, 4609887779099788759
+298, 4609503319862290027
+299, 4608809762931362117
+300, 4608037449870401927
+301, 4607755403017924034
+302, 4609087730452781738
+303, 4608773046045154889
+304, 4609803415624001168
+305, 4610998875554212160
+306, 4610380022165388956
+307, 4607984105708776524
+308, 4607847620250154418
+309, 4609666480042052524
+310, 4609307223459772378
+311, 4610669103098622941
+312, 4611513493576426284
+313, 4610110724985187558
+314, 4607584875859460118
+315, 4607466337518526743
+316, 4610953875036984820
+317, 4608473324196281668
+318, 4610528420574205379
+319, 4611218523029715214
+320, 4609404517070225101
+321, 4610679296055932161
+322, 4611602007192673713
+323, 4608768227857799294
+324, 4611351262607349204
+325, 4608656666931918232
+326, 4607814222059811944
+327, 4610377735718844205
+328, 4609693488663627404
+329, 4607234605916181353
+330, 4610438458653690136
+331, 4607691881688829838
+332, 4610084067104393530
+333, 4610193058189981242
+334, 4610500065590109969
+335, 4608182288567589802
+336, 4610884979206264676
+337, 4607934930963198287
+338, 4608198333740812601
+339, 4611615912551444803
+340, 4611091273781746311
+341, 4609878217869378267
+342, 4610329799427547900
+343, 4608946066069950044
+344, 4610517372931467061
+345, 4610173879547218394
+346, 4610768143539619524
+347, 4608251912463490886
+348, 4609138858501301814
+349, 4609537774087558923
+350, 4607501599203475779
+351, 4608820206286486654
+352, 4607594549608867563
+353, 4608928529430502872
+354, 4610326793501581341
+355, 4609216901643916714
+356, 4609921023396761286
+357, 4610188250845345370
+358, 4609056567531193554
+359, 4608042356944953893
+360, 4611153374110275273
+361, 4607652688871602388
+362, 4607736758450185452
+363, 4607772815382776660
+364, 4610793989334300613
+365, 4610810029813744832
+366, 4608713713202824549
+367, 4610555523666319407
+368, 4608933966316349782
+369, 4610847233909664040
+370, 4610569003709254271
+371, 4610141934611190870
+372, 4609800637427386711
+373, 4609531911954538534
+374, 4610018946619778104
+375, 4607563033735657544
+376, 4609466294634090519
+377, 4609110904485970900
+378, 4608802716203741548
+379, 4611231193234792818
+380, 4609853965624850005
+381, 4607407678664700238
+382, 4611560957363283790
+383, 4607258843130776963
+384, 4607438437753792222
+385, 4610880518315386981
+386, 4608724997072138032
+387, 4607896367882266335
+388, 4609466683623316620
+389, 4609649679136642775
+390, 4607572059242669390
+391, 4610690224087953221
+392, 4607212888873300995
+393, 4610115548532567091
+394, 4611204182849533970
+395, 4611480154563209673
+396, 4607313745181304733
+397, 4609677304468142434
+398, 4608230866091821000
+399, 4607916785319391722
+400, 4607735989143160304
+401, 4608364795273033367
+402, 4608202139927885958
+403, 4608897400704372931
+404, 4611267249785141575
+405, 4609988674862878902
+406, 4607825900064550736
+407, 4611018040541037989
+408, 4608438772151688632
+409, 4610422591938237999
+410, 4607217184553988938
+411, 4607633087503746743
+412, 4609394147749351901
+413, 4608101641384193571
+414, 4609733515509206078
+415, 4611489547250433971
+416, 4607834589624331833
+417, 4611349716992792673
+418, 4609707846875238752
+419, 4607311797705362203
+420, 4608945328148355588
+421, 4611273525690510581
+422, 4611458884537996759
+423, 4607997755969685936
+424, 4609048489714323017
+425, 4610334128017869552
+426, 4607485869716832613
+427, 4607547499540098372
+428, 4611447798198333473
+429, 4607207442813565439
+430, 4611108178646490883
+431, 4609758124675924332
+432, 4610269457948568827
+433, 4607360068671694963
+434, 4607781179483110631
+435, 4610840076859630697
+436, 4609605188868326206
+437, 4610833404575495679
+438, 4609202151986229830
+439, 4607653465598307819
+440, 4610341806509732173
+441, 4608937637268370608
+442, 4608846981481205936
+443, 4609890399657918800
+444, 4607475810914216914
+445, 4610779510882657410
+446, 4607200291019787105
+447, 4608763897810030884
+448, 4611030953084521579
+449, 4610608205209840707
+450, 4609901665329352338
+451, 4608229933322773774
+452, 4608306405922059711
+453, 4609402784224466904
+454, 4607797912916831810
+455, 4609320676286567523
+456, 4611203509963612873
+457, 4609443449463211381
+458, 4611201121136708490
+459, 4607891679344035909
+460, 4609295647591940857
+461, 4608699650823090334
+462, 4610113773137160513
+463, 4609644998840868353
+464, 4607236971413190205
+465, 4610986387001985169
+466, 4607686165213831157
+467, 4608006708913412573
+468, 4611617607231087789
+469, 4607950605030537282
+470, 4611312308422726037
+471, 4609920921889730694
+472, 4611272051294701454
+473, 4610732866915233164
+474, 4611475736494024667
+475, 4609129855793761412
+476, 4610896503566695638
+477, 4608983293576256239
+478, 4611337113271775442
+479, 4607264202049306366
+480, 4609273459645222412
+481, 4607686257312802596
+482, 4610552669683473434
+483, 4609573159080816112
+484, 4610109994193793014
+485, 4609104807624348930
+486, 4609056640876615682
+487, 4611233171931551808
+488, 4610700243077601839
+489, 4609689839939656894
+490, 4608154258714850667
+491, 4611519937102265713
+492, 4608524210713510379
+493, 4609408429794931452
+494, 4608727835041307081
+495, 4608363974471195432
+496, 4611053981101408157
+497, 4611244348235020563
+498, 4611215359362792075
+499, 4611323939601701219
+500, 4607339198007393537
+501, 4611192785515763411
+502, 4609520870364372480
+503, 4610305448099707859
+504, 4607627137213702268
+505, 4609512376112901200
+506, 4607188668249670063
+507, 4611507107596430103
+508, 4611290552034620332
+509, 4610948015281142465
+510, 4610082188797301672
+511, 4611154579920165202
+512, 4607910614898084038
+513, 4609111687709912685
+514, 4607756890586988655
+515, 4611478346930052063
+516, 4610271854072480776
+517, 4607666773584055448
+518, 4611269065667018778
+519, 4607229932372594880
+520, 4609361761863029782
+521, 4610810902409829664
+522, 4608310590726885309
+523, 4611549741777094242
+524, 4608905382237807476
+525, 4607539324166606283
+526, 4611302527859497090
+527, 4607673514510851852
+528, 4610239139758062881
+529, 4608296614307074920
+530, 4611131538327332418
+531, 4610491790884660304
+532, 4608012090568842826
+533, 4611145939579689859
+534, 4611569174305843109
+535, 4607548241749347055
+536, 4611302507266314629
+537, 4607334076415859573
+538, 4610759794541675536
+539, 4611562195466283509
+540, 4608064277646826273
+541, 4611362206697199696
+542, 4611267027417975453
+543, 4609817290222129321
+544, 4610075404291128380
+545, 4609555606129743990
+546, 4607220569899493231
+547, 4611584841957177930
+548, 4609037839026191075
+549, 4611594336803497113
+550, 4607225960438616513
+551, 4609362154617705500
+552, 4609887291423254556
+553, 4608541390551696577
+554, 4608696812349818364
+555, 4608371224718817057
+556, 4610715234165102256
+557, 4607906422122850842
+558, 4610831254800690212
+559, 4607810400373332275
+560, 4608705747590604299
+561, 4608938946760670556
+562, 4610310158116436046
+563, 4610355131502528018
+564, 4609768625905121586
+565, 4610143261296345738
+566, 4611431373682787281
+567, 4608146686998001641
+568, 4609198539721817636
+569, 4608916158230506393
+570, 4607654288747635129
+571, 4611682519183492769
+572, 4607197631212679817
+573, 4607299807028695407
+574, 4609116180622479613
+575, 4611019095836572557
+576, 4608581189094026112
+577, 4607488328508280547
+578, 4608587490233232612
+579, 4607245708447615950
+580, 4607189799494915135
+581, 4609348574263949313
+582, 4608021918670812153
+583, 4608172706554967110
+584, 4608811025395016288
+585, 4609364751750743520
+586, 4607844470980185823
+587, 4609405096277516268
+588, 4607748139765213490
+589, 4608512257043070004
+590, 4609962195184017357
+591, 4608461665680660962
+592, 4611127630212845842
+593, 4609686172238940069
+594, 4608777755231651430
+595, 4608284543534209439
+596, 4610868067515254496
+597, 4611535716997037852
+598, 4611319738221220860
+599, 4608658969391651641
+600, 4609452813595548756
+601, 4610236109831493974
+602, 4609938178451088584
+603, 4610331640367617101
+604, 4610901433958649983
+605, 4609766058585980491
+606, 4609222434831315585
+607, 4609778306904942608
+608, 4609448207660443683
+609, 4611299794046339746
+610, 4607801595505703392
+611, 4609594326292439532
+612, 4607668862605395543
+613, 4608245023900457864
+614, 4610578512588843180
+615, 4608185699959219467
+616, 4610904181340375013
+617, 4610647304739305074
+618, 4609795287579987586
+619, 4607960349041110093
+620, 4607703003215776639
+621, 4609403905570407605
+622, 4611233143041131400
+623, 4610530479829073842
+624, 4610679919769197229
+625, 4611448708224350289
+626, 4611445633822299312
+627, 4610496480556319861
+628, 4609555553457224207
+629, 4607626163577357218
+630, 4608595404165123581
+631, 4610510352711119715
+632, 4610203134139830798
+633, 4607550008954478579
+634, 4611603434572420257
+635, 4609780364056746558
+636, 4607295948877799964
+637, 4609867047995237092
+638, 4607936708021896797
+639, 4608897965423418533
+640, 4611287469240086203
+641, 4608515945123070881
+642, 4609851530250371283
+643, 4607577382199018499
+644, 4607744147814966969
+645, 4607260472041943130
+646, 4610683962948666275
+647, 4609625943316701593
+648, 4607251851603159602
+649, 4608016163551470839
+650, 4607202891515091580
+651, 4609099272171658208
+652, 4608510662830783836
+653, 4607744672536335386
+654, 4608142194450948613
+655, 4609476103099505412
+656, 4611399217441119768
+657, 4611495773005281088
+658, 4608815211248586470
+659, 4607337589064315457
+660, 4611394644152964336
+661, 4610812001439064700
+662, 4610702350009793284
+663, 4611075442411386625
+664, 4611077060876180663
+665, 4608164209437610624
+666, 4611368259599962784
+667, 4608333197470863467
+668, 4607183015995911227
+669, 4607199710185468635
+670, 4609413972037912933
+671, 4609234714230829818
+672, 4607739028685645905
+673, 4608232319438231981
+674, 4609333542787352994
+675, 4607657722219109388
+676, 4609193924059916664
+677, 4611141187805060655
+678, 4611068281150742947
+679, 4610549552759132313
+680, 4610085533805630329
+681, 4607232810679281805
+682, 4608493447592041083
+683, 4607355443052807819
+684, 4608410340438808883
+685, 4610315775824782427
+686, 4610312241247357403
+687, 4611287815156776852
+688, 4608076401857758978
+689, 4607457081882300105
+690, 4610908420357480199
+691, 4609797527119137644
+692, 4607351051017728429
+693, 4607618982820305008
+694, 4609846699151054310
+695, 4609389871379854176
+696, 4611243148153910479
+697, 4609270449294231868
+698, 4610832482336321517
+699, 4608101914557495685
+700, 4609128450704503077
+701, 4607351438344234793
+702, 4610010340063776057
+703, 4608461610523881117
+704, 4607869099658377415
+705, 4611211613048598168
+706, 4611196065771110369
+707, 4610515053922650643
+708, 4610096469861694516
+709, 4610477093507778048
+710, 4611547661480689243
+711, 4608438911039690892
+712, 4611311311815318674
+713, 4609279386396407118
+714, 4608222142760880731
+715, 4611613394716251191
+716, 4607603661150022989
+717, 4610135239835120022
+718, 4610929039427992532
+719, 4610757208246529003
+720, 4610920496514785256
+721, 4607326205191641070
+722, 4607938491595237155
+723, 4608585902537439220
+724, 4609326104534891368
+725, 4609325776820376036
+726, 4609693740995539995
+727, 4611329366056096595
+728, 4609303022615335557
+729, 4611512548552170265
+730, 4610404528899365728
+731, 4608023620660481005
+732, 4609431135637339890
+733, 4610767321626117704
+734, 4611106580332635792
+735, 4607433026987401919
+736, 4609580917376189588
+737, 4608816125719706388
+738, 4608380327649573838
+739, 4608700977565012592
+740, 4609148128564608995
+741, 4609631585490496912
+742, 4610745913090661333
+743, 4607498234984630394
+744, 4608367220496728902
+745, 4608365876885021447
+746, 4611537321062599251
+747, 4611238252705917535
+748, 4607525503355262497
+749, 4610601812175940986
+750, 4610145907668011789
+751, 4610384184669464682
+752, 4610699305276533889
+753, 4611440399153628650
+754, 4607963045023571960
+755, 4611498554915678298
+756, 4609015832347581911
+757, 4610795942139040060
+758, 4608894432143218464
+759, 4609704019108678046
+760, 4608168143636007672
+761, 4609566697927636482
+762, 4608690694207868944
+763, 4607746195488024521
+764, 4608350743731006452
+765, 4608442252024570087
+766, 4608428784099249674
+767, 4608941009071857822
+768, 4609298165329524240
+769, 4610447927377989769
+770, 4608304643580688447
+771, 4611265394576506233
+772, 4611210499769545678
+773, 4610114198739241967
+774, 4610653279632780678
+775, 4609515286518383576
+776, 4607984314013723903
+777, 4611541983726033367
+778, 4611393756437132236
+779, 4608968117844197920
+780, 4609367443784351367
+781, 4609488775108334110
+782, 4607529648757616057
+783, 4610676930934349350
+784, 4607750265025461672
+785, 4610373465791644318
+786, 4609305678766837551
+787, 4608947449753189724
+788, 4610366767677719066
+789, 4610439177886004542
+790, 4611242968978180676
+791, 4609370292455902521
+792, 4607754584885122450
+793, 4611224375496789735
+794, 4608921239858925416
+795, 4609513753577022933
+796, 4608075523570985167
+797, 4608608957047081948
+798, 4611273688846153770
+799, 4608394757574873003
+800, 4610377036529664140
+801, 4608600356910393592
+802, 4609667431524003711
+803, 4608601585637259149
+804, 4611533564639785432
+805, 4607510309835958191
+806, 4609651505654903275
+807, 4608166496451053374
+808, 4609515171183335141
+809, 4609776525693204395
+810, 4607696284598399608
+811, 4608607508956363891
+812, 4609695267960623947
+813, 4607576367302408137
+814, 4608741052307396862
+815, 4611095472713646530
+816, 4610161900255157770
+817, 4609145054582502965
+818, 4607410140376051944
+819, 4608126518935915215
+820, 4608269617716261203
+821, 4609477491264110038
+822, 4607463147955504958
+823, 4608999294660391637
+824, 4608694924732427850
+825, 4611156031005634796
+826, 4608453663346634965
+827, 4611380857524502488
+828, 4611362793875369801
+829, 4611632478058955853
+830, 4609434664425350531
+831, 4607606564530411276
+832, 4607391976443208678
+833, 4607762558563019180
+834, 4608554249145639939
+835, 4607806692993216225
+836, 4609510831152869655
+837, 4608164624489904634
+838, 4608455009317767175
+839, 4607280108540066925
+840, 4610080527249430824
+841, 4608840198094196329
+842, 4608916984669714190
+843, 4609771655387294402
+844, 4611351501375292078
+845, 4610356649846014183
+846, 4609861702465798084
+847, 4609335612683847594
+848, 4608963836668425606
+849, 4611448716653608808
+850, 4611618237088472583
+851, 4607650248665393412
+852, 4609477068480641193
+853, 4611408250260317487
+854, 4607799702152927524
+855, 4608984567553844241
+856, 4608966215304179278
+857, 4607599007502108199
+858, 4611197470586031919
+859, 4607738821906038713
+860, 4610174343711771016
+861, 4609411396159113704
+862, 4610528341790372072
+863, 4610621185894682737
+864, 4611164850264296206
+865, 4607500722733965482
+866, 4608747074062289526
+867, 4609587390330409056
+868, 4608013778287410191
+869, 4609438917309909895
+870, 4611359511257377419
+871, 4611161903145694224
+872, 4609908825458581349
+873, 4609974364203149964
+874, 4608056454984693014
+875, 4607485841556578933
+876, 4607689636557505920
+877, 4607225026099434704
+878, 4608918180817633858
+879, 4607389899324828547
+880, 4609528891100730648
+881, 4609347474444270651
+882, 4610604256334495724
+883, 4607717534965049292
+884, 4607416814400338843
+885, 4609568365470566179
+886, 4609490489177847460
+887, 4609959177607409888
+888, 4608249931585238164
+889, 4608374394377617948
+890, 4609359264913370700
+891, 4610789661266619275
+892, 4607881230950036624
+893, 4608163786355022310
+894, 4608830462616805753
+895, 4609531962596587483
+896, 4610555549279318514
+897, 4610008765530009024
+898, 4609509527271380682
+899, 4608445793235798406
+900, 4608895922045956617
+901, 4611496044586314375
+902, 4609855938206283389
+903, 4610584515201059904
+904, 4608185787632733541
+905, 4609925998848840417
+906, 4609746471060930910
+907, 4608322802169846228
+908, 4611668609080045996
+909, 4610918346613262546
+910, 4607487495258046096
+911, 4610091716845110326
+912, 4611060358092721143
+913, 4610617258787020006
+914, 4607968616643301279
+915, 4607216453440634248
+916, 4607683961727519867
+917, 4610192441377241514
+918, 4611340079503032986
+919, 4607737818907905432
+920, 4608040273267030617
+921, 4609075420363483026
+922, 4610025209467938351
+923, 4608669897432477872
+924, 4608611467736828996
+925, 4610963769428151250
+926, 4611230933830803123
+927, 4609892039139108424
+928, 4608322827835753071
+929, 4608048405227745232
+930, 4611336950552458383
+931, 4609990562309176924
+932, 4608539034786829718
+933, 4609715165139430182
+934, 4608805499266985258
+935, 4607728070995330274
+936, 4608780877909747196
+937, 4607569412899178661
+938, 4607268788340312926
+939, 4608510300788384404
+940, 4609202712081615466
+941, 4609583146251705462
+942, 4610981698790205568
+943, 4607925526524476327
+944, 4607793604049723576
+945, 4610915422726587727
+946, 4607690153123448022
+947, 4610957908781080072
+948, 4609688199240625930
+949, 4609195637372175715
+950, 4607455193109906152
+951, 4607614996131060051
+952, 4607821739007708428
+953, 4611432473374206640
+954, 4609331676904204846
+955, 4607810059335115947
+956, 4611077768988065423
+957, 4611510065592294343
+958, 4608753144000455824
+959, 4610618261702230984
+960, 4609478955747078670
+961, 4608250680894683660
+962, 4611056070648131063
+963, 4607756102257795122
+964, 4610370838903190290
+965, 4611412764774525666
+966, 4609100881666906368
+967, 4610119679924928715
+968, 4609686905253473358
+969, 4608711239949443984
+970, 4607839187561408271
+971, 4609413459785445169
+972, 4609209994304368132
+973, 4609118705149046785
+974, 4607291458128247233
+975, 4611161411572838996
+976, 4610256654040673624
+977, 4608882855825268963
+978, 4609049328169514708
+979, 4609651814435298462
+980, 4609304465056789103
+981, 4607682759379096849
+982, 4609946393233090661
+983, 4609946524554590950
+984, 4610880973039636436
+985, 4607217356662986962
+986, 4608230276563898969
+987, 4610664933477117472
+988, 4607562227262100270
+989, 4610133121835039282
+990, 4609071027656845298
+991, 4610444138469204749
+992, 4607185460608050805
+993, 4609895459462574326
+994, 4610016322490782234
+995, 4609380549113996677
+996, 4609371524623560982
+997, 4610108153607631096
+998, 4607489006177078361
+999, 4607632190656691768
diff --git a/numpy/random/tests/data/mt19937-testset-1.csv b/numpy/random/tests/data/mt19937-testset-1.csv
new file mode 100644
index 000000000..3d4995840
--- /dev/null
+++ b/numpy/random/tests/data/mt19937-testset-1.csv
@@ -0,0 +1,1001 @@
+seed, 0xdeadbeaf
+0, 0xca6b2fb1
+1, 0x3fa2a974
+2, 0xc12788fe
+3, 0x27c9b64d
+4, 0xabea28ce
+5, 0x540ac30f
+6, 0xb239d7be
+7, 0x440e5156
+8, 0xc65c133c
+9, 0x7333c5fa
+10, 0x8292807d
+11, 0x459bdab6
+12, 0x4f9f1306
+13, 0xe261f5f7
+14, 0xdb8b69
+15, 0xdf65ed00
+16, 0x5fc8bb71
+17, 0x35a46ece
+18, 0x6344e7ce
+19, 0xd4c1c08b
+20, 0xb88c9bf1
+21, 0x72292bb3
+22, 0xbfb6a51f
+23, 0xbb2ab6f
+24, 0x9378d4f3
+25, 0x85bc696
+26, 0x1fa92b2a
+27, 0x5816122
+28, 0x54e84469
+29, 0x8cdbea8c
+30, 0xefa62749
+31, 0x7b13a32e
+32, 0xe0c88cc3
+33, 0x238fba9f
+34, 0xbee28cb4
+35, 0xc4a2bbe1
+36, 0x8ebb893f
+37, 0x53333007
+38, 0x42c59297
+39, 0x507542da
+40, 0x4c89a1d9
+41, 0x28cd06c0
+42, 0x63b1b8ff
+43, 0x890947ca
+44, 0x73996302
+45, 0x7b9afff
+46, 0x3d6cf3a2
+47, 0x2d8cf12c
+48, 0x1915a047
+49, 0x2e9f42a2
+50, 0xe1d7ea8
+51, 0x8ce9eb49
+52, 0x452706b0
+53, 0x1495dda9
+54, 0x62339095
+55, 0x1fb22d23
+56, 0x6f68cf26
+57, 0x905f8cc4
+58, 0xde25d38f
+59, 0xf4f3efa2
+60, 0x8b60b406
+61, 0xecf051fb
+62, 0x287a9210
+63, 0x96e96fb
+64, 0xb60dd795
+65, 0x305f4bb5
+66, 0xfe838ef2
+67, 0x40671f78
+68, 0xa1cfdcb3
+69, 0xa06c0c2d
+70, 0xbcbce0a0
+71, 0x6485453c
+72, 0xd6d9e7b5
+73, 0xeac233ef
+74, 0xb2a276b4
+75, 0xb5b97ad1
+76, 0x87bc49da
+77, 0x1036f82b
+78, 0x1e6fc3df
+79, 0x87afcd40
+80, 0xe827dc29
+81, 0x16d11b25
+82, 0xe0c549ba
+83, 0x427b8a
+84, 0x346fa564
+85, 0x5449ea5c
+86, 0x511199c6
+87, 0x5ccf41ab
+88, 0x9a8a0bbc
+89, 0x77f12026
+90, 0x4c9b8ad3
+91, 0xead800a7
+92, 0x80c8a86b
+93, 0x3c84c630
+94, 0x19a6c752
+95, 0xc9187482
+96, 0x7eb43f2f
+97, 0x89f4fdeb
+98, 0x14db06ce
+99, 0xcbdc6e25
+100, 0x43ac775
+101, 0xbd730a54
+102, 0xf722dcaa
+103, 0x41768d48
+104, 0x20992130
+105, 0xe9973805
+106, 0x61d15976
+107, 0x94c478c8
+108, 0x2b743992
+109, 0xf6fff8fa
+110, 0xaac859b1
+111, 0xf03d49ec
+112, 0x620dc61
+113, 0x4ce7143c
+114, 0x6b85f7cc
+115, 0x5fa31164
+116, 0xa284fa6a
+117, 0x8714fcfe
+118, 0x5d7713ff
+119, 0x423c4261
+120, 0x78897296
+121, 0x84281814
+122, 0xec3f65c5
+123, 0xa3922399
+124, 0x7465ebf7
+125, 0x5e794eae
+126, 0xaca415d0
+127, 0x277cf6ea
+128, 0x248357fa
+129, 0xefabaa92
+130, 0x57982e83
+131, 0xb1d764c
+132, 0x7c945b58
+133, 0xfd684cf6
+134, 0xeac7a06d
+135, 0x367835e0
+136, 0x1a5d6883
+137, 0xf900c7da
+138, 0xe3571db7
+139, 0x9d6834db
+140, 0xbba4a672
+141, 0x4cd219a3
+142, 0x58c4197e
+143, 0x4b037cf4
+144, 0x357acf28
+145, 0x284d7c27
+146, 0x8d0c4569
+147, 0x6ed031f
+148, 0xd43e8a5f
+149, 0x9cef208b
+150, 0x189ea68b
+151, 0xf7dad179
+152, 0x5e562f3d
+153, 0x322b1e73
+154, 0x3a328762
+155, 0xc4078884
+156, 0x20798ff2
+157, 0xbcfbf409
+158, 0xeb6d471
+159, 0x8a0cba0d
+160, 0x53726e18
+161, 0x22b38033
+162, 0xa321a604
+163, 0xf40c90a3
+164, 0x755bb1d3
+165, 0x2832a2a8
+166, 0xfffce275
+167, 0x3afdb520
+168, 0x98d8f18d
+169, 0x7a4183b4
+170, 0x69a43d75
+171, 0xd631a4ef
+172, 0x2aec3183
+173, 0x60767685
+174, 0x214e1dfd
+175, 0x9f14f54d
+176, 0xfde4f2bc
+177, 0x60a7d47b
+178, 0xeaece219
+179, 0xd634f4a0
+180, 0x80ad6fab
+181, 0xbe1a53d2
+182, 0xf9a527a4
+183, 0xfdf0ac75
+184, 0x924f54f
+185, 0xf99626ee
+186, 0xcf7140d3
+187, 0xc8169d5d
+188, 0xeb43d58d
+189, 0x4b44ace
+190, 0xb44ecabe
+191, 0x613d8bdf
+192, 0x65e3c025
+193, 0x2e324718
+194, 0x9dba63bc
+195, 0x8e01c6d2
+196, 0x34800136
+197, 0xc2b01a3
+198, 0x59a182fa
+199, 0xf834c79f
+200, 0x20e41a8d
+201, 0x94079cae
+202, 0xcafb9877
+203, 0x87a4b067
+204, 0xa89f22a7
+205, 0xa2932911
+206, 0x580f0787
+207, 0xe4ca48c5
+208, 0x65c9677a
+209, 0x37a7ae16
+210, 0xb978422c
+211, 0x565bef70
+212, 0xbd7e6dc4
+213, 0xe4ebe924
+214, 0x4a789e96
+215, 0x99520b24
+216, 0xebad792e
+217, 0x5d28630a
+218, 0x4b33a5bb
+219, 0x5a5dedda
+220, 0x7ce8d5e
+221, 0xa6cdd3a9
+222, 0xb2bcef6a
+223, 0x13a8db8c
+224, 0x61791eb4
+225, 0xb71e2381
+226, 0xb80dbbcf
+227, 0x4d82b92f
+228, 0x4f655a9b
+229, 0x7748a0a9
+230, 0x508f7c48
+231, 0xd0713d9b
+232, 0x3f48b380
+233, 0xd71d7c16
+234, 0x1f8ccd28
+235, 0xebcb920
+236, 0x2f5f4540
+237, 0xb9f69275
+238, 0x6dd968b4
+239, 0x417759f7
+240, 0x7a73257d
+241, 0x154ecc84
+242, 0x12f280ce
+243, 0x8391eb4b
+244, 0xd76d638d
+245, 0xf6c44241
+246, 0x8b137d48
+247, 0x71fb30ef
+248, 0xe738bba6
+249, 0x28f9bbac
+250, 0x46b0dcfe
+251, 0x933856e8
+252, 0xad21fdbb
+253, 0x5706c9d
+254, 0x254b3ce
+255, 0xc95fa489
+256, 0x4cc8fd61
+257, 0x9f6d990f
+258, 0x3ed84328
+259, 0xfb1251c7
+260, 0x1da78081
+261, 0x2592d895
+262, 0x5c8396cf
+263, 0x47fa1df
+264, 0x94526768
+265, 0xa41e6fb4
+266, 0x97d47f9a
+267, 0x35a56c1f
+268, 0xc7af497e
+269, 0x906dbbfc
+270, 0x861e3287
+271, 0xe91e3387
+272, 0x5b08570d
+273, 0x69574f7c
+274, 0x32ccf53
+275, 0xf6a6bee3
+276, 0x373d970f
+277, 0xaa780838
+278, 0x309d4cc9
+279, 0x58ec672f
+280, 0x47cb0305
+281, 0xd4809ac9
+282, 0x138a774d
+283, 0x82fa852b
+284, 0x53bbd107
+285, 0x1512b55d
+286, 0x6d53592c
+287, 0x92b7ab58
+288, 0x6654f430
+289, 0xe11837f3
+290, 0x4538410d
+291, 0xa2101ede
+292, 0x93c2435e
+293, 0x5e91b4e4
+294, 0x8f16260
+295, 0x3e64fed1
+296, 0x267fc0f9
+297, 0x3d3ecd37
+298, 0xc4352f2d
+299, 0x2170164d
+300, 0x3fc50df
+301, 0x2c9313dc
+302, 0xe69e1950
+303, 0xf834dec1
+304, 0x598d6cb1
+305, 0x79b36360
+306, 0x5d49f11a
+307, 0x2ab7af4b
+308, 0xf80cc125
+309, 0x824e4b68
+310, 0x36800a00
+311, 0x39186f93
+312, 0x84e177fd
+313, 0xe6a40078
+314, 0x86f11e7a
+315, 0xa1e79fe1
+316, 0x19fc66f9
+317, 0xb3a2dfb4
+318, 0x88e8091f
+319, 0x37dce87d
+320, 0xd54b5bc1
+321, 0x323e0c83
+322, 0x1c3d9868
+323, 0x14096d96
+324, 0xe5fbfe55
+325, 0x330004c2
+326, 0x8991d8f
+327, 0x934ba7db
+328, 0x828aea71
+329, 0xaa955f4d
+330, 0xb9097b03
+331, 0xdb924c7c
+332, 0xc0fd3c77
+333, 0x6571bc9e
+334, 0x3f89462f
+335, 0x30ec5ce9
+336, 0xd5083782
+337, 0x68f7c4cc
+338, 0x4fd9cbe6
+339, 0xbcf08518
+340, 0xeebb9016
+341, 0xadaf6dbe
+342, 0x5aadbf38
+343, 0x5b52ba6c
+344, 0x6f31bd06
+345, 0x76b03446
+346, 0xec383171
+347, 0xe5547138
+348, 0x8c87998a
+349, 0x1c166e4
+350, 0xd73c5950
+351, 0xa257e0fd
+352, 0x9f042772
+353, 0x7b26801e
+354, 0x16bce15d
+355, 0xb1b3b033
+356, 0x12fc256e
+357, 0x8426ed90
+358, 0x16dc30d0
+359, 0x3e003f97
+360, 0x22bf7feb
+361, 0x12941766
+362, 0x4da7a3e3
+363, 0x4e4e9900
+364, 0xc2a6efe8
+365, 0x16522570
+366, 0xc49fd435
+367, 0xfc8137a5
+368, 0xe595897e
+369, 0xf9dcef1b
+370, 0xabdef12a
+371, 0x4ebe25f0
+372, 0x86f58fdd
+373, 0x46cac45a
+374, 0xe430ec3a
+375, 0xfd6e6a04
+376, 0xeacffe64
+377, 0xe026aa7f
+378, 0xdaf0b65b
+379, 0xc0b72e68
+380, 0x63c1dd42
+381, 0x18ec01ec
+382, 0x18678c16
+383, 0x2cbbbcc5
+384, 0x457872b4
+385, 0x937347d4
+386, 0x6bdf0813
+387, 0xc6e572de
+388, 0x9e0c6f94
+389, 0x45225c3b
+390, 0x6fe099ce
+391, 0x73b82a0f
+392, 0x27203a8e
+393, 0xc402180c
+394, 0x3b26ea4d
+395, 0x852b4444
+396, 0xa6b9a99e
+397, 0xecb23332
+398, 0x27fff68a
+399, 0x234a59a3
+400, 0xd8a13a6c
+401, 0x9e4e99a
+402, 0xd4500a99
+403, 0x97822d54
+404, 0x1747949e
+405, 0x79b82e14
+406, 0xe907796e
+407, 0x2b4bd2ce
+408, 0x242b9adf
+409, 0xc6979922
+410, 0xa122e4c9
+411, 0x45289a38
+412, 0xa123f35d
+413, 0x4464993d
+414, 0x89a70091
+415, 0x29f6e129
+416, 0xa2bc559b
+417, 0x7b9d89c9
+418, 0x74969534
+419, 0x97fdef8c
+420, 0xff09ac83
+421, 0x8a8e913f
+422, 0xcfb04bba
+423, 0x4ae8ce80
+424, 0x5113f1b6
+425, 0x5e8cfda0
+426, 0x1c3b5e35
+427, 0xeab9562c
+428, 0x18a11b6e
+429, 0x2f8a0ac1
+430, 0xd564482f
+431, 0x772b6c44
+432, 0x27937ce5
+433, 0x202aa930
+434, 0x1a6fb83a
+435, 0x3514c661
+436, 0x8c6d26b2
+437, 0x62ce4154
+438, 0x86a82cf2
+439, 0x8a73e17f
+440, 0xd7798e07
+441, 0xbd83717d
+442, 0x886b880b
+443, 0xf7ff35c6
+444, 0x3357dc52
+445, 0x3266f4f8
+446, 0x384ad1fb
+447, 0xb34e4e06
+448, 0xfbe250d8
+449, 0xd3d37e83
+450, 0x862b1b12
+451, 0x839a3f7
+452, 0xb22afe3a
+453, 0x851d430d
+454, 0x514d7503
+455, 0xf8bb3e8
+456, 0x4acdb849
+457, 0xcdd0ace0
+458, 0x6f6b6638
+459, 0x37a6e0ef
+460, 0x3e55d305
+461, 0x9ac94ea4
+462, 0x34d82789
+463, 0x1e50a54b
+464, 0x12eca710
+465, 0x7813b899
+466, 0x7d56587
+467, 0xa0daf18d
+468, 0x461f0a88
+469, 0xc38a68a8
+470, 0xb61e025f
+471, 0x9c27611e
+472, 0x21a055c9
+473, 0x5f2545d9
+474, 0x981e0107
+475, 0x3f651b42
+476, 0x72b8aece
+477, 0x84b09757
+478, 0x3ce97c5
+479, 0x4ebc1ac2
+480, 0x395c23d
+481, 0x7c87b77d
+482, 0xa5a5b68
+483, 0x5b8a13a8
+484, 0xe5e6f965
+485, 0xf47c69d0
+486, 0x8a7bd38a
+487, 0x59a94533
+488, 0xb506fe84
+489, 0x8d96d007
+490, 0x4052151e
+491, 0xcaf48e44
+492, 0x2889548b
+493, 0x4262fe1e
+494, 0x93e43134
+495, 0xb585fdf2
+496, 0x3339e66a
+497, 0xe530ee9e
+498, 0xa2987fae
+499, 0x977205c
+500, 0xbfece4e0
+501, 0xf9c925bb
+502, 0x999b687b
+503, 0x35a166ed
+504, 0xe9eba709
+505, 0x40827685
+506, 0xa301a157
+507, 0x18f6e790
+508, 0x8148659f
+509, 0x1896e693
+510, 0x90cc1b28
+511, 0x4189c62e
+512, 0xda765fdc
+513, 0xd219eb8f
+514, 0xfac2dd2e
+515, 0xef5a48f5
+516, 0xe16f0fe
+517, 0x341cba94
+518, 0x69d6e865
+519, 0xaa36eeb8
+520, 0xcfb99f18
+521, 0x8bb61595
+522, 0xa8c2123b
+523, 0x3c9310e8
+524, 0x1ee33b4
+525, 0x70c4ca87
+526, 0x1fe3babc
+527, 0x7e1a697d
+528, 0xf950c974
+529, 0x62c4350f
+530, 0xdf4b4b4c
+531, 0xb3c8c87f
+532, 0xf406b1b9
+533, 0x5b53d2a3
+534, 0x283606bf
+535, 0xdf1dc8a8
+536, 0xdaf05fe
+537, 0x6bd95a2c
+538, 0xa40ffa04
+539, 0xc59ffac5
+540, 0x333bbaa2
+541, 0xa2e970e9
+542, 0x8686876e
+543, 0xe7eff30f
+544, 0xce8349c5
+545, 0xfb32eef3
+546, 0x692e678
+547, 0xb22eef64
+548, 0x32309c10
+549, 0xd28593bc
+550, 0x1055cd1a
+551, 0xeec5e7a4
+552, 0x9b15bd7f
+553, 0x62068ffb
+554, 0x35d431e6
+555, 0x6f795d99
+556, 0x5a583e83
+557, 0x940f9322
+558, 0xbb6392db
+559, 0x9133e1be
+560, 0x4ba22917
+561, 0x3d98a18d
+562, 0xd7aa3d1a
+563, 0xdd912a6
+564, 0x99265a2b
+565, 0x7d2e4e3f
+566, 0x9cfc42f3
+567, 0xad2be67e
+568, 0xed7ef841
+569, 0xb1d3b8b4
+570, 0xa56b36f8
+571, 0xe2ef74e0
+572, 0xdf0ef0d9
+573, 0xfd944a1a
+574, 0x8dbaa48
+575, 0x7842914
+576, 0x316243c2
+577, 0x2e4c5f54
+578, 0xb86e001a
+579, 0x46546448
+580, 0x9643c3d6
+581, 0xbdf7d2da
+582, 0xc4e703cb
+583, 0x4a45fbad
+584, 0xa6375deb
+585, 0xa9fc789a
+586, 0xc0d075d4
+587, 0xe1824e00
+588, 0xdb54581
+589, 0x645bd158
+590, 0x2044aaa9
+591, 0x706ab8db
+592, 0x35151344
+593, 0x2ef15d18
+594, 0xf48d0690
+595, 0x5c23ba6c
+596, 0x565c730e
+597, 0xc8ed50ad
+598, 0xbc6d554e
+599, 0x37a911d2
+600, 0x865dc33b
+601, 0xfb9ab637
+602, 0x453dcafe
+603, 0x7889820c
+604, 0xb9f6ef68
+605, 0x7815d4a0
+606, 0xe97080ad
+607, 0xbbef816a
+608, 0x52d9c2b8
+609, 0x15ea5696
+610, 0x3a83f72f
+611, 0xa1378189
+612, 0x892d5668
+613, 0x919e54b4
+614, 0xdb28c6f5
+615, 0xdf6cdf84
+616, 0x8f8f8a52
+617, 0xb3ee2710
+618, 0x9ece78ae
+619, 0xe60ffbb4
+620, 0x1e7646ac
+621, 0x1682946d
+622, 0xd4a252d0
+623, 0xcbc981de
+624, 0x5261bf81
+625, 0xa33cd368
+626, 0x98e9e554
+627, 0xa14efd44
+628, 0xcd777d9
+629, 0x8ee578e5
+630, 0x169fcd30
+631, 0x46964c36
+632, 0x49415678
+633, 0xfbc239f3
+634, 0xe00071f4
+635, 0x5a4c1d76
+636, 0xa753cb6d
+637, 0x6327b16e
+638, 0xb38c5ebd
+639, 0x8185adf5
+640, 0xb1cfdc44
+641, 0xaffdc601
+642, 0x46559995
+643, 0xf739bbda
+644, 0x950a90f9
+645, 0x779bec0e
+646, 0x55791e65
+647, 0xfd94fd72
+648, 0x982b57d6
+649, 0x935efae1
+650, 0x18707a87
+651, 0x5123add3
+652, 0x54b8a239
+653, 0xff5a40bd
+654, 0x63ead20d
+655, 0x125e8aa0
+656, 0xbae0eba5
+657, 0xc9238af1
+658, 0x3767fc3a
+659, 0xc3df41b7
+660, 0xdc53148b
+661, 0xd2fb97c5
+662, 0xf8c89afc
+663, 0xbb6deecf
+664, 0xbcc6ec6f
+665, 0xc7931d3c
+666, 0x9f40e3be
+667, 0x4d966e4e
+668, 0xf369918f
+669, 0x43c3d8dd
+670, 0x305248ca
+671, 0xb6b52eab
+672, 0x97aa1849
+673, 0x840729bf
+674, 0x4cb6e57
+675, 0xa7d59069
+676, 0x1a9a8197
+677, 0xf584e7b5
+678, 0x699c6a70
+679, 0x189b83e8
+680, 0x49f4b09e
+681, 0xe726ab1a
+682, 0x243775c8
+683, 0x8220f49d
+684, 0x6edba081
+685, 0x2fbd3b8a
+686, 0x34818276
+687, 0x81bbd13c
+688, 0xf30e9f84
+689, 0x2b75ac4b
+690, 0xfe66b7ff
+691, 0x178b6c29
+692, 0x89ff4e30
+693, 0xc047a72d
+694, 0x87977310
+695, 0xa91bf888
+696, 0xf2abc0c6
+697, 0x8547f3ce
+698, 0xe78699e9
+699, 0x7c715be7
+700, 0x715aec9c
+701, 0x260708ea
+702, 0x4bf72dba
+703, 0x19134f34
+704, 0xcefe0ecc
+705, 0xb74397aa
+706, 0x8e48750
+707, 0xb4c2d35e
+708, 0x76d81bcd
+709, 0x9788da5d
+710, 0x234182d6
+711, 0x7efb59e4
+712, 0x15656eb2
+713, 0x2b2ebf2c
+714, 0x4d44ac09
+715, 0x57cb6312
+716, 0xe5facad4
+717, 0x6f2dda2
+718, 0x1ace7d61
+719, 0x703ca72e
+720, 0x88481396
+721, 0x7235f4bc
+722, 0x30921317
+723, 0xd0575405
+724, 0x7c96cf3a
+725, 0xabf955c7
+726, 0x27ecd579
+727, 0xfc70f045
+728, 0x68a835b
+729, 0x73bc67ba
+730, 0x84fd3806
+731, 0x8e08d696
+732, 0x5454e052
+733, 0x1e2dd75d
+734, 0xc7903278
+735, 0x50ddb207
+736, 0xcf7431a9
+737, 0x5e2db746
+738, 0x817e811c
+739, 0x56c11bf
+740, 0xe6f5e4e9
+741, 0x97816caf
+742, 0x7abaa833
+743, 0x7d7d777e
+744, 0x62d02361
+745, 0x162b687f
+746, 0x1360b813
+747, 0xe1c25671
+748, 0x19cd787
+749, 0x9321cab6
+750, 0x799dc638
+751, 0x1b49aef0
+752, 0x6ebd59a5
+753, 0x173cdc79
+754, 0x77e4d187
+755, 0x21803577
+756, 0xa75154bc
+757, 0xd92067f1
+758, 0xfcbbda1c
+759, 0x713722ff
+760, 0xb95dedf
+761, 0x10c217fa
+762, 0xb166163
+763, 0x39a49d38
+764, 0x4a5f52c6
+765, 0xba172c1
+766, 0x471eb536
+767, 0x9dec38e5
+768, 0x14d3b53
+769, 0x5c588a4c
+770, 0xe1a85acc
+771, 0x78a5baad
+772, 0xd6f90a59
+773, 0xe8d371f7
+774, 0x931890ae
+775, 0xea3e4b0e
+776, 0xd63407ac
+777, 0xf797c99d
+778, 0x48da86e8
+779, 0xe23019c0
+780, 0xa70bebaa
+781, 0xa49dde13
+782, 0x3f242449
+783, 0x1eddf689
+784, 0xad0e89a4
+785, 0x32e046dd
+786, 0x572feee9
+787, 0xfe8cd35e
+788, 0x361ade3f
+789, 0x2781da1c
+790, 0x7fe09627
+791, 0x9a81a896
+792, 0xb52dfbad
+793, 0x862b12c8
+794, 0xd0dc9c3b
+795, 0x410e82c1
+796, 0x20d95af3
+797, 0x17357938
+798, 0xd1f2e42a
+799, 0x99efd6c3
+800, 0x2dae59f4
+801, 0x51702dba
+802, 0xa020dc62
+803, 0xd71ebd9d
+804, 0x9c498db6
+805, 0xc50017ae
+806, 0x4f944ffc
+807, 0xe9a8e62f
+808, 0xac490f79
+809, 0xc816d8b0
+810, 0xf3770304
+811, 0x4ba63128
+812, 0x7f4be54f
+813, 0xdcf19d03
+814, 0x589718c4
+815, 0xed7c3114
+816, 0x70e5d73d
+817, 0xdce25620
+818, 0x411e12af
+819, 0xd68dfd60
+820, 0xbd44f0e1
+821, 0xb2962c96
+822, 0x4c7fa632
+823, 0x85136387
+824, 0x41b232a4
+825, 0xdb9a8997
+826, 0xfcb5df1b
+827, 0xa046c4
+828, 0x5a7e53d4
+829, 0xe214dfbf
+830, 0xc0861c7d
+831, 0x3087ed3
+832, 0xd70b7358
+833, 0x369a9dee
+834, 0xb99e904c
+835, 0x22052e4b
+836, 0x9afd4d95
+837, 0xd9dbcec
+838, 0x9c18c47a
+839, 0x97caa173
+840, 0x6f124137
+841, 0x26db8abb
+842, 0x2dfeba8f
+843, 0xc9ebd4dd
+844, 0x2bf6f89b
+845, 0xec81549f
+846, 0xee3f1ac2
+847, 0xa3bad22a
+848, 0xb9597c71
+849, 0xe220adf
+850, 0xa9fbfdb5
+851, 0x9d817858
+852, 0x5679190d
+853, 0x216c47c0
+854, 0x6c1d0b13
+855, 0x401d2e42
+856, 0xf3ca424f
+857, 0x2894625e
+858, 0xa614fdd8
+859, 0xa11e427
+860, 0xbc937623
+861, 0xe684b934
+862, 0x33821e19
+863, 0xbfc008f9
+864, 0x11579cd9
+865, 0x9886df8f
+866, 0x5889e2e8
+867, 0xefbba03b
+868, 0x182e7d44
+869, 0x217f4e99
+870, 0x82623484
+871, 0x6bb6f662
+872, 0x49bb5fcf
+873, 0xf7c8d1a9
+874, 0xea51c810
+875, 0x40ef965e
+876, 0x24d4b1a3
+877, 0xe9266bbf
+878, 0xfb5179a0
+879, 0x92d23fc
+880, 0x8c646351
+881, 0x527608ec
+882, 0xd215edf3
+883, 0x3434a6ad
+884, 0x757e915e
+885, 0x62ef706f
+886, 0x467080bc
+887, 0x2578c3b6
+888, 0xc308bc20
+889, 0x44fe744f
+890, 0x50ea3915
+891, 0xeb3995d3
+892, 0xe5ee8390
+893, 0xb9c7a39f
+894, 0x83ab2921
+895, 0xb194f017
+896, 0x17e00f01
+897, 0x54ca5220
+898, 0xa10e3a60
+899, 0x1426c5ca
+900, 0xdd42073d
+901, 0x6a7b3945
+902, 0xda2127d7
+903, 0x4b0dd400
+904, 0xd35134fd
+905, 0xcfa033e8
+906, 0xcbf475f0
+907, 0xcdb92b39
+908, 0xde8c0c75
+909, 0x219d1cd7
+910, 0xd6398be
+911, 0xa3eaac5f
+912, 0x92898b14
+913, 0xf4c27fce
+914, 0xd5f7cb82
+915, 0xc10ec953
+916, 0xa01d0f31
+917, 0xc794c9e4
+918, 0x54168123
+919, 0x723bcdf2
+920, 0x6cea1b
+921, 0xdf18376a
+922, 0x922a0845
+923, 0x8eda2a83
+924, 0x9b0608f
+925, 0x472cbc78
+926, 0x7afdce6b
+927, 0x1bfa7fdd
+928, 0x5ada3d12
+929, 0x5cf41e17
+930, 0xc506060b
+931, 0x7214c2ac
+932, 0xc19ae321
+933, 0x9b031d30
+934, 0x4c7b88da
+935, 0xd00e5d13
+936, 0xee6b59c4
+937, 0x79ddaf5b
+938, 0x29cf931
+939, 0xc6fa4b96
+940, 0x874ab89b
+941, 0x4abc046c
+942, 0x366d693e
+943, 0xd6a1758b
+944, 0xd964eb41
+945, 0x7eabd20b
+946, 0xf71f17ac
+947, 0xdb5d8c06
+948, 0x54602ce1
+949, 0x786313f6
+950, 0xae4aea46
+951, 0xca92465b
+952, 0x60047085
+953, 0x39f7dd56
+954, 0x9d1ff152
+955, 0xfdf62ba0
+956, 0xa15cf163
+957, 0xb953b33
+958, 0xc912dbb9
+959, 0x9e7f36f1
+960, 0x34c02ede
+961, 0x6742f244
+962, 0xd586cf43
+963, 0xc2bf8b07
+964, 0x814f36b4
+965, 0xaef9cfbd
+966, 0x1ec4b840
+967, 0x7aaaf552
+968, 0x5eab3290
+969, 0xc6f9bfdc
+970, 0x7e43bf8e
+971, 0x3c63bf8
+972, 0x4ce6e886
+973, 0x4b1e48ca
+974, 0xff5bade3
+975, 0xdf72eca5
+976, 0x48e273a4
+977, 0x8b186129
+978, 0xcf6f6016
+979, 0x7c70ccf7
+980, 0xe82e54f8
+981, 0xcfdb9cfb
+982, 0x884af787
+983, 0x839fb72d
+984, 0x6f021358
+985, 0xbe27e737
+986, 0x12de7b8c
+987, 0x946ce6c1
+988, 0xd95a0cee
+989, 0x54adc084
+990, 0x6850d90e
+991, 0x8e7e4a4a
+992, 0x27e99d2c
+993, 0xa966b606
+994, 0x6f9e586
+995, 0x141df137
+996, 0x80bdaf81
+997, 0xa1cd6dce
+998, 0xecd7c0de
+999, 0x44dc0c32
diff --git a/numpy/random/tests/data/mt19937-testset-2.csv b/numpy/random/tests/data/mt19937-testset-2.csv
new file mode 100644
index 000000000..d2f6c156c
--- /dev/null
+++ b/numpy/random/tests/data/mt19937-testset-2.csv
@@ -0,0 +1,1001 @@
+seed, 0x0
+0, 0x8c7f0aac
+1, 0x97c4aa2f
+2, 0xb716a675
+3, 0xd821ccc0
+4, 0x9a4eb343
+5, 0xdba252fb
+6, 0x8b7d76c3
+7, 0xd8e57d67
+8, 0x6c74a409
+9, 0x9fa1ded3
+10, 0xa5595115
+11, 0x6266d6f2
+12, 0x7005b724
+13, 0x4c2b3a57
+14, 0xe44b3c46
+15, 0xe84bdd8
+16, 0xf6b29a58
+17, 0x45cccd8c
+18, 0x6229393a
+19, 0x7a4842c1
+20, 0xcaae7de6
+21, 0xcfea4a27
+22, 0x8765a857
+23, 0x7adfc8ae
+24, 0x916b5e58
+25, 0x648d8b51
+26, 0xecf3e6a5
+27, 0xd6094219
+28, 0x122f6b4d
+29, 0x565f9848
+30, 0x164e1b09
+31, 0xa5ee9794
+32, 0x52d0873
+33, 0x5e4513d0
+34, 0xd52692f3
+35, 0xf5081ec5
+36, 0xc73547fe
+37, 0x23ee074f
+38, 0xdeb91daf
+39, 0xdebe09c0
+40, 0xfa86bb52
+41, 0x793e6063
+42, 0xcc95a7d8
+43, 0xcd087cb1
+44, 0x762382f3
+45, 0x853e031d
+46, 0xc7d0c293
+47, 0xadcb0c93
+48, 0x1e473b8e
+49, 0xb87b61a7
+50, 0xa3d1dd20
+51, 0x94ff3fc1
+52, 0x24b2cd09
+53, 0x89914ab9
+54, 0xf1d5d27f
+55, 0xc234a220
+56, 0x8597da1f
+57, 0x1b1cc2ca
+58, 0x6a2748f4
+59, 0x793de097
+60, 0x43b9eaa3
+61, 0x2fb379fe
+62, 0xc6342dcb
+63, 0xbca6ab72
+64, 0x74c644b7
+65, 0x376fd81c
+66, 0x9184e322
+67, 0x229da880
+68, 0x4cf6880
+69, 0x52fae7a4
+70, 0x9e1d5c35
+71, 0x26511785
+72, 0x9cb24e26
+73, 0x38ea0de8
+74, 0x9def62f4
+75, 0x62f0f111
+76, 0xf199794f
+77, 0xe710b184
+78, 0xae8bc669
+79, 0x732fec2a
+80, 0x5c08b5ba
+81, 0x9cf1ba1f
+82, 0x6fe15378
+83, 0xe7005101
+84, 0xb297f541
+85, 0x196a6fe7
+86, 0xf6aefa9
+87, 0xf8456839
+88, 0xaab13923
+89, 0xa7342f66
+90, 0xabaeec77
+91, 0x2bc0bb0b
+92, 0x35dba1ae
+93, 0x5bafdc52
+94, 0x2101505b
+95, 0xc02cf780
+96, 0x50bfe98e
+97, 0x9b9aca63
+98, 0x5d1c2635
+99, 0x53364b8c
+100, 0x91f86a79
+101, 0x9d63faa
+102, 0x70483054
+103, 0xa25fc8cb
+104, 0xfd061144
+105, 0xf57db306
+106, 0x1a1f9bc4
+107, 0xa71d442f
+108, 0x3578f27f
+109, 0xa29337f4
+110, 0x294b9483
+111, 0xfecbf3cc
+112, 0xa7321b64
+113, 0x94f424b4
+114, 0x40d7b7e8
+115, 0x6a140f4e
+116, 0x7760248f
+117, 0x7985c694
+118, 0x3e92ace3
+119, 0x9f9e5bba
+120, 0x28b23b17
+121, 0x5687aacf
+122, 0x1c418b8d
+123, 0xacbc9175
+124, 0xa8053755
+125, 0x51342230
+126, 0x235ff531
+127, 0xc741a645
+128, 0x325338a9
+129, 0xf31716a3
+130, 0x5e64c5c0
+131, 0xa99b5c5f
+132, 0xd22c9cc5
+133, 0x3796e5e
+134, 0x18dba100
+135, 0x9f72d771
+136, 0xd6838eb2
+137, 0xac74f524
+138, 0x1899e7a2
+139, 0xf8d16330
+140, 0xf9f93f5d
+141, 0xe0d14983
+142, 0x77f98662
+143, 0x8276be2a
+144, 0xfa0d03cd
+145, 0xe435170
+146, 0x9ad727e7
+147, 0x737f2b95
+148, 0xbd4060c9
+149, 0x51de97f
+150, 0xa083600
+151, 0x7113f78a
+152, 0x48660972
+153, 0xfac6322b
+154, 0x1ec533ba
+155, 0x5c048d7f
+156, 0x4bcfd817
+157, 0x7b1bd6bb
+158, 0x1e64f082
+159, 0xb04c1979
+160, 0x51675862
+161, 0xe166de3e
+162, 0x6a0d23a3
+163, 0xeb117ade
+164, 0x106bf87b
+165, 0x3781a7c3
+166, 0xb145da52
+167, 0x90b037ae
+168, 0x910ccae3
+169, 0xdd775c94
+170, 0x43f090d1
+171, 0x824bca32
+172, 0x85f3959b
+173, 0xeaae5b0e
+174, 0x180c7c29
+175, 0xebd0fc3a
+176, 0x93713ac1
+177, 0x1546dc24
+178, 0xede65b0a
+179, 0x47189056
+180, 0x518dbc2b
+181, 0x2653368
+182, 0xaadb680b
+183, 0xd7a3bb02
+184, 0x21bd8133
+185, 0xa5ad3450
+186, 0xb7613820
+187, 0xd76514b6
+188, 0x4a168480
+189, 0x43c55b26
+190, 0x2ee5a113
+191, 0x65d794ae
+192, 0x9625b62a
+193, 0x8d85b573
+194, 0x525c4b8
+195, 0x2a3989bc
+196, 0xd43569e8
+197, 0x5eabbe4d
+198, 0x133b91e
+199, 0x257d3518
+200, 0xad85627d
+201, 0x91d28302
+202, 0x451f3e03
+203, 0xb428205e
+204, 0xbc35ace2
+205, 0x49d9976b
+206, 0xf651fd0d
+207, 0x6eebf770
+208, 0x3fae4928
+209, 0xc1903548
+210, 0x937f0c13
+211, 0x6566b25f
+212, 0x97900f48
+213, 0xe562c59a
+214, 0x927f19c2
+215, 0xa39054f8
+216, 0x391be0b4
+217, 0xe43ce943
+218, 0xf3e75bec
+219, 0xae181f3d
+220, 0x7276cf0e
+221, 0x72fe9f60
+222, 0xd8ae3d04
+223, 0xfa839fc3
+224, 0xb31112ed
+225, 0x1dbf688b
+226, 0x4c24d3fc
+227, 0xc45baa56
+228, 0xd0550dcd
+229, 0x696d0b79
+230, 0x6581666d
+231, 0xace9934b
+232, 0xe18ffab8
+233, 0x3ff2a610
+234, 0x94ce4c98
+235, 0x502f139d
+236, 0xe1b96895
+237, 0xf725846e
+238, 0xb149c019
+239, 0x96a5a5d0
+240, 0xb9aa43bc
+241, 0xa8e00779
+242, 0x8056cb76
+243, 0x88803475
+244, 0xf4c1e5bd
+245, 0x3b043653
+246, 0xa4dc8aa1
+247, 0x65162768
+248, 0x6c81c3a0
+249, 0x9e6a3ce4
+250, 0x9b3c95fb
+251, 0x7990eafb
+252, 0x4e9d879
+253, 0x785a9546
+254, 0x4d3401d5
+255, 0xb750a91f
+256, 0xa901220d
+257, 0x49b9c747
+258, 0x4a4286b8
+259, 0x622a9498
+260, 0x9e36424f
+261, 0xbfc99829
+262, 0x6dc3c912
+263, 0xe0e23e28
+264, 0x22ae6db6
+265, 0x1a5540cf
+266, 0x4c5c3b0b
+267, 0x17a5d0a6
+268, 0x91e9386f
+269, 0x5aa2cd5d
+270, 0x97436ff9
+271, 0x8d43d481
+272, 0x9306fadf
+273, 0x89ba776
+274, 0xa7382b2c
+275, 0xf80de0d8
+276, 0xa6f03d7d
+277, 0x522ce018
+278, 0x6e717043
+279, 0x38a4abd2
+280, 0xe58413ef
+281, 0x2429df03
+282, 0x5e1888ea
+283, 0x18e606cc
+284, 0x6f94d7e6
+285, 0xfbea3123
+286, 0xe45516d6
+287, 0x42a5b3fe
+288, 0xce62babd
+289, 0x897a4ec5
+290, 0xb4320ad7
+291, 0x72ab4a2b
+292, 0x19a87820
+293, 0x197d5c0b
+294, 0xeb633668
+295, 0x5a3118d4
+296, 0xb6d8848a
+297, 0x7820b6b6
+298, 0xffb46feb
+299, 0xd754f5a5
+300, 0x26423e7d
+301, 0xe796fe9c
+302, 0xde3d826f
+303, 0x99d7de8
+304, 0x29992302
+305, 0x8220f61b
+306, 0x9d954fd3
+307, 0x2ab684d9
+308, 0x1fb2aa97
+309, 0xc76fe335
+310, 0xd9171133
+311, 0xdd6c44ae
+312, 0xceac7494
+313, 0x69514bb5
+314, 0x91b0961d
+315, 0x23d53e43
+316, 0x683d2a23
+317, 0x8814327
+318, 0x11b4ed89
+319, 0xfb8a0849
+320, 0xb28ab129
+321, 0x5f8ffb97
+322, 0x741b5f83
+323, 0x6b8a0f2e
+324, 0xb8d8a2da
+325, 0xcf357b2
+326, 0xddcb3b6c
+327, 0x5d912703
+328, 0xf9bbc71f
+329, 0x441bb09
+330, 0xdb15ed8a
+331, 0x3b11ee1b
+332, 0x2ffb1ad
+333, 0xc3d140c7
+334, 0x5c2785a7
+335, 0xf1b2143d
+336, 0xbae0a955
+337, 0xbffff361
+338, 0x2befec2c
+339, 0x56e32b22
+340, 0x8562a7a2
+341, 0x7d531458
+342, 0xde91821
+343, 0x56c7ba85
+344, 0x3332f8e8
+345, 0x2df312ff
+346, 0x4bdd824
+347, 0x2bc5c700
+348, 0xcb2fc5cb
+349, 0x76a4b922
+350, 0x395320c5
+351, 0xdfe4037e
+352, 0x5868f7b5
+353, 0xf1b1d4fe
+354, 0xed96bc50
+355, 0x9bb675be
+356, 0xb4548088
+357, 0x98be68bd
+358, 0x8269881
+359, 0xc89ce8d1
+360, 0x2a296570
+361, 0x8001b923
+362, 0x9f193578
+363, 0xce50d5b
+364, 0x93c540a8
+365, 0xb2f81774
+366, 0x3ce68b24
+367, 0xfe0db0b0
+368, 0xef28a619
+369, 0x446b5143
+370, 0x9d2cdf67
+371, 0xadd8e1fc
+372, 0x891f3b23
+373, 0xdd418c72
+374, 0x9704571e
+375, 0xc037541d
+376, 0xbae946f1
+377, 0xf6e8cd21
+378, 0x4fdba092
+379, 0x8de2d511
+380, 0x65f1d0dd
+381, 0x365f3954
+382, 0x35b851fd
+383, 0x38f20a02
+384, 0x2faa5845
+385, 0x37fff565
+386, 0xf1c2638c
+387, 0x91cf922c
+388, 0xbd533375
+389, 0x73bd6afd
+390, 0x7d8eb542
+391, 0xf8616e6f
+392, 0x3a37d85b
+393, 0xae382d55
+394, 0x411d81a7
+395, 0x15d5ee27
+396, 0xedaffcb
+397, 0xe716e96
+398, 0x6f35ed9e
+399, 0x7ce2ee91
+400, 0x4fd1dac6
+401, 0xe18983c7
+402, 0xb2439112
+403, 0xf9f5a35c
+404, 0x60b4582b
+405, 0x9e1ed453
+406, 0x2dfa81b1
+407, 0x8ae13329
+408, 0x651585d
+409, 0xdac7f4ae
+410, 0x11374595
+411, 0xbe6bf0c9
+412, 0xadecaf59
+413, 0x7a8549f2
+414, 0x742579e0
+415, 0xad5537db
+416, 0x895d4149
+417, 0x9b674e1c
+418, 0xe58c3feb
+419, 0xb6f660d1
+420, 0xfd86da69
+421, 0x7830f7ba
+422, 0x37868f80
+423, 0x74bd5fd6
+424, 0xa9bf7e3f
+425, 0xe80b0410
+426, 0x4369186a
+427, 0x2320e0a4
+428, 0x549625e
+429, 0x3aae1e18
+430, 0xc2251a74
+431, 0xe1af94bf
+432, 0x51eca4c3
+433, 0xe7886533
+434, 0x622ab088
+435, 0xa55223b8
+436, 0x969bf35b
+437, 0x531e6c5d
+438, 0xd4bf977b
+439, 0x850bcaee
+440, 0xa104f457
+441, 0x3a0a0
+442, 0xdf660893
+443, 0x4fd61248
+444, 0x4606d9c7
+445, 0x6cea6457
+446, 0xcc4ccc0d
+447, 0xe2a57d3a
+448, 0x2f85d651
+449, 0xae0c9478
+450, 0xf3ea2774
+451, 0x74c4ebb7
+452, 0xafff3b40
+453, 0x7bc0aacb
+454, 0x372b82dc
+455, 0xc9ead3a4
+456, 0xf286e119
+457, 0x3abcb320
+458, 0xbb195daa
+459, 0xe15b2f0e
+460, 0x410251d6
+461, 0x504e251c
+462, 0x369b9d14
+463, 0xf51b7fd2
+464, 0x84a8cd44
+465, 0x78c4b616
+466, 0x691d4e3
+467, 0xb62a5b7a
+468, 0x351cc253
+469, 0x27588287
+470, 0x6cb82fc8
+471, 0xbafe423d
+472, 0x5fc99a8d
+473, 0xa5719605
+474, 0x76ace100
+475, 0x37026c88
+476, 0x4712accf
+477, 0x2fbbb9cf
+478, 0x96377fb5
+479, 0xcebd948b
+480, 0xdd25a404
+481, 0xbf4099a7
+482, 0x1e16915c
+483, 0xacc2cbad
+484, 0x8472f51a
+485, 0x46e2824a
+486, 0x21cf3734
+487, 0x2cc6d3ee
+488, 0xb7841db1
+489, 0xb4586cdb
+490, 0x65642b33
+491, 0x769102e3
+492, 0x90bf7369
+493, 0xd7265312
+494, 0x2eeb6d75
+495, 0x34721522
+496, 0x2514be33
+497, 0x2a3abe9e
+498, 0x7cf141b5
+499, 0x1ff50f3a
+500, 0x5b096fab
+501, 0xb8da4737
+502, 0xf0c025fc
+503, 0x7cbc3fc
+504, 0xc3ec5b12
+505, 0xbf3b03ad
+506, 0xbfa86b57
+507, 0x17b461c1
+508, 0xe75a2d46
+509, 0x37aad5ea
+510, 0x155b2c35
+511, 0xbfcf2330
+512, 0x8d5c7c5e
+513, 0xbb50483b
+514, 0x95a03950
+515, 0xbad669a
+516, 0xf641767c
+517, 0x358b50a3
+518, 0x4aca2e3a
+519, 0x497343b1
+520, 0x3da6f46a
+521, 0xad6120c9
+522, 0x19acdd2c
+523, 0x1023470d
+524, 0x434bb79
+525, 0x8e3f0746
+526, 0xedf5a226
+527, 0x25d8ea7
+528, 0xab7fa688
+529, 0xd541fc0d
+530, 0xc8ffc7f8
+531, 0xfbfd0387
+532, 0x481f76d0
+533, 0xb4183bf8
+534, 0x961efa16
+535, 0x2e7f61f8
+536, 0x105f5f4f
+537, 0x832c37d9
+538, 0x7c521708
+539, 0x94982ee3
+540, 0xfa3d1f06
+541, 0xc99c5cd1
+542, 0xe062a5c7
+543, 0x9b41f9d4
+544, 0x569195d9
+545, 0x37e93fc2
+546, 0xf629763c
+547, 0x7485f190
+548, 0x3b50cc38
+549, 0xe0fd9b72
+550, 0xf3068eed
+551, 0x7e054a97
+552, 0xf0fe2118
+553, 0xb72f0404
+554, 0xcc988a64
+555, 0x7c74f3ec
+556, 0xa1650931
+557, 0xb5636957
+558, 0xdfd1561e
+559, 0x7f861e36
+560, 0x4b036099
+561, 0xd8346f14
+562, 0xd9545d61
+563, 0x31c06965
+564, 0x9e2d2ab9
+565, 0xc5f8b197
+566, 0x3637d9b
+567, 0xf969041d
+568, 0x58e44ba1
+569, 0xdcc05573
+570, 0x25ec8f35
+571, 0xc7ca0a77
+572, 0xfb592bb3
+573, 0xfc2b1356
+574, 0x7a7679f6
+575, 0xc0e9f007
+576, 0x7f550a69
+577, 0x1094bf1
+578, 0xa3b47889
+579, 0x44fc9ab6
+580, 0x5e5b8f80
+581, 0x69160353
+582, 0x230be578
+583, 0x6da013a4
+584, 0xd2764ed1
+585, 0x4c3f5c94
+586, 0x3099df75
+587, 0x66b09bf0
+588, 0x82e5cd03
+589, 0x1ee3607e
+590, 0x396cd72a
+591, 0xfb0f2241
+592, 0x190c5614
+593, 0x67f78324
+594, 0xdcb89544
+595, 0x91b7cbd0
+596, 0xf9114070
+597, 0x57f687af
+598, 0xf5f9428a
+599, 0xc9f390ed
+600, 0xe8140568
+601, 0x694fb3de
+602, 0xc627f75b
+603, 0x5bf9362b
+604, 0x5549003f
+605, 0x66458f9f
+606, 0x14c30f94
+607, 0x4d44c9c6
+608, 0x6840f509
+609, 0xc674cdbc
+610, 0x3b73b25b
+611, 0xed1c4a6f
+612, 0x21eab5a3
+613, 0x53478953
+614, 0xdad674c
+615, 0xf3ef5512
+616, 0xb9c08d71
+617, 0x3921f4a
+618, 0x2ece8e2
+619, 0x889134e1
+620, 0xc544c7ab
+621, 0x4df91683
+622, 0x259e4b8c
+623, 0xe2031ce4
+624, 0x145b8f3a
+625, 0x4028cf81
+626, 0x16f03971
+627, 0xad6adc80
+628, 0xac0b5327
+629, 0xcf77f418
+630, 0x3ed062ba
+631, 0x6ea14124
+632, 0x6ba87963
+633, 0xc08be345
+634, 0x8eafb886
+635, 0xd460d003
+636, 0xdc4d14e2
+637, 0x61085b79
+638, 0xba1f92a8
+639, 0x18b779bc
+640, 0x453435a1
+641, 0x41925d1c
+642, 0x21a8db44
+643, 0x9789101a
+644, 0xe2d02e0
+645, 0x79fa68f8
+646, 0x4d35916d
+647, 0x7ce947b3
+648, 0x431a2cc9
+649, 0x756135b5
+650, 0x74c5a0c5
+651, 0x864bb3a1
+652, 0xaeeb8687
+653, 0x7127ea7d
+654, 0xb214825e
+655, 0xda464848
+656, 0x4894b0f6
+657, 0x6ef5db54
+658, 0x6142e487
+659, 0xd3adc6c3
+660, 0x2e5fe8d5
+661, 0x82643ddb
+662, 0xc9de1e6c
+663, 0x161ccd43
+664, 0xe8d9866
+665, 0xa8f85f54
+666, 0xb26e6947
+667, 0x34e36253
+668, 0xc75894df
+669, 0xd8e70900
+670, 0xc7042e85
+671, 0xae6d8d5b
+672, 0x4269846b
+673, 0x2da97b9e
+674, 0x5fb237c9
+675, 0x11e247d3
+676, 0x966cee07
+677, 0x27aec95
+678, 0x45d7a7e5
+679, 0xe45d5ddc
+680, 0x5ef03588
+681, 0x222ac6ab
+682, 0x3272262e
+683, 0xc7792000
+684, 0x75b91d68
+685, 0xecd782b3
+686, 0xb6bb626
+687, 0xb715f459
+688, 0xccbf6c4a
+689, 0x7da649f3
+690, 0x13b36ae2
+691, 0x78310a7b
+692, 0x84d26157
+693, 0xe1f93c60
+694, 0x4e8b1b53
+695, 0x7d08711a
+696, 0x93d9dace
+697, 0x6a211820
+698, 0xf59d6c73
+699, 0x2c9299c6
+700, 0xa5441761
+701, 0x79ac91ac
+702, 0x90d833b
+703, 0xc89d2739
+704, 0x6e2edab2
+705, 0x8e7228ad
+706, 0x829076e9
+707, 0x28ed0c84
+708, 0x8942edb9
+709, 0x24d2005d
+710, 0xae6fbd5b
+711, 0xa6433591
+712, 0x471089a3
+713, 0x8a0a8ec2
+714, 0x20fd0194
+715, 0x536013ad
+716, 0x648664b9
+717, 0x25a2b3cf
+718, 0xf4d70177
+719, 0x28ed3ea4
+720, 0x2fe7cf69
+721, 0x21212abe
+722, 0xe76b7e04
+723, 0x943441f1
+724, 0x8b36ddf2
+725, 0x179e5ccd
+726, 0x74f8259e
+727, 0xe919756d
+728, 0xe1cd7757
+729, 0x153da2e2
+730, 0x756711a3
+731, 0xcce59a49
+732, 0xb9630cda
+733, 0xe08ba7b7
+734, 0x6626861a
+735, 0x17ecf576
+736, 0xe76f7416
+737, 0x6d2261cc
+738, 0xb0a57acf
+739, 0x7924fd62
+740, 0xb31a6e5a
+741, 0x9487cc33
+742, 0x53e57be6
+743, 0xb75bc72e
+744, 0xc1bc3ed0
+745, 0x6edfe3d
+746, 0xa2d4e5bc
+747, 0xbb3cdb2f
+748, 0x3d71f7fa
+749, 0xc457b868
+750, 0x29191280
+751, 0x2800d8a
+752, 0xcbe04fcb
+753, 0x4eebd78d
+754, 0xf58bf147
+755, 0x3b9d125e
+756, 0x75489606
+757, 0x80e09ead
+758, 0x974abcf5
+759, 0xf427159e
+760, 0xdb93b60f
+761, 0x8eccb8a9
+762, 0x750c98a6
+763, 0x18f3b535
+764, 0xf3ae0bab
+765, 0x9f265252
+766, 0x93646d87
+767, 0xdcef0cdc
+768, 0xd21dcb41
+769, 0x285a96a9
+770, 0xe8a9fb42
+771, 0xfe0fdc72
+772, 0xd0c62b5c
+773, 0x15c2a14e
+774, 0x28cf62e5
+775, 0x182e64db
+776, 0xa0ff7cf6
+777, 0xa2342064
+778, 0x65ffc99f
+779, 0xf30528dd
+780, 0x100df4b2
+781, 0xefce9dfc
+782, 0x6c8d60ae
+783, 0x7287625d
+784, 0x42391e72
+785, 0xba4a4ea1
+786, 0xd95a930c
+787, 0xbe034ee0
+788, 0x886a6e9
+789, 0x4e96a350
+790, 0xf57fe442
+791, 0x1ea955c8
+792, 0x5af973f3
+793, 0x71a2087d
+794, 0x5b51248a
+795, 0x644b5270
+796, 0x42e1ada
+797, 0x8827449b
+798, 0x2f6b62b8
+799, 0xd8695c78
+800, 0x66b8f141
+801, 0x894949c0
+802, 0xede60ac5
+803, 0xae262f58
+804, 0x19805d22
+805, 0x9bf30fcf
+806, 0xf1ff4803
+807, 0x1935dabc
+808, 0xde96ccee
+809, 0x178f1ea5
+810, 0x7443fcab
+811, 0xe53c6d3
+812, 0x53a2ab58
+813, 0x1626fe46
+814, 0x3b951e94
+815, 0x3cb76386
+816, 0x9d4d8f1c
+817, 0xd6ea5273
+818, 0x8779386
+819, 0x85ba1342
+820, 0x3fec25c
+821, 0x8358dfdc
+822, 0x6dc58e66
+823, 0xa65b6365
+824, 0x116d4d7b
+825, 0x8b6a4ec5
+826, 0x407f346d
+827, 0x84fa549
+828, 0x389e0064
+829, 0x9484d2b6
+830, 0x40d1234d
+831, 0xc5661795
+832, 0x218cd5fb
+833, 0x6050629f
+834, 0x314ce51
+835, 0x7db3cc23
+836, 0x1d9060ed
+837, 0xfb4cbcf3
+838, 0x9e54b8fa
+839, 0x3ea17988
+840, 0xf968dafe
+841, 0x5fd3a519
+842, 0xfd874015
+843, 0xbb059ad
+844, 0x68b7c4e5
+845, 0x4f6097d6
+846, 0x29b76190
+847, 0xd4de7499
+848, 0xa385e3ee
+849, 0xce990c77
+850, 0x7d84a6a5
+851, 0xa3d89f7f
+852, 0xfd49f581
+853, 0x5e3bf585
+854, 0x10b7c6c6
+855, 0x5010998c
+856, 0xc8820d5a
+857, 0xcd45224a
+858, 0x49d47bfb
+859, 0x1208d3b6
+860, 0x3dcd9c4e
+861, 0xaefea33e
+862, 0xa999e648
+863, 0x617778c7
+864, 0x3efdff2d
+865, 0xa2494c85
+866, 0xaa75be2f
+867, 0xed47f2bb
+868, 0x846e54aa
+869, 0xda9bd1c3
+870, 0x6c91188a
+871, 0x7f67d2f2
+872, 0x8e000539
+873, 0x6d868ddb
+874, 0x497c3559
+875, 0xd2934183
+876, 0xb4e2147d
+877, 0xbcfc6ace
+878, 0x6a340f52
+879, 0x727804c5
+880, 0x5c4cb6ba
+881, 0xf80a0784
+882, 0xd422dc11
+883, 0x5cf822c5
+884, 0xeccaa1bf
+885, 0x65c4c15e
+886, 0xbc72298
+887, 0xbd1a4e83
+888, 0x3b8d7145
+889, 0x72f721a8
+890, 0x593890a4
+891, 0xeff1de3a
+892, 0xd0a1a4b1
+893, 0x41da0db7
+894, 0xfc492a98
+895, 0x61bb02a1
+896, 0xf80e8792
+897, 0xb277df61
+898, 0xe7aab1ce
+899, 0xe5a662f1
+900, 0x4beb1c87
+901, 0x1efdc7b5
+902, 0xfdf472eb
+903, 0x3dd5f02e
+904, 0x3fd9fdf0
+905, 0x3a6f7bf4
+906, 0x1b1caa7f
+907, 0x7d507ba1
+908, 0xf371a151
+909, 0xe43ad49d
+910, 0x3bc16e0c
+911, 0x5bacee76
+912, 0xb094a72e
+913, 0x629eeb76
+914, 0xef07120
+915, 0xeaae9f22
+916, 0xbb0fc073
+917, 0x1d231657
+918, 0xe1b86a7c
+919, 0xa1917199
+920, 0x45be6cae
+921, 0x220029f2
+922, 0x6109df6b
+923, 0x5fce7e34
+924, 0x5fd1dfe9
+925, 0x530c326e
+926, 0xbfb09640
+927, 0xae1c0d4c
+928, 0x3ce0ef76
+929, 0xcba82a49
+930, 0x2bfe9092
+931, 0x8101cb04
+932, 0x7304c707
+933, 0x4bd68a83
+934, 0x4df1a430
+935, 0xe2ce6c4c
+936, 0xd6d51925
+937, 0x5a143074
+938, 0x3cdca5ed
+939, 0xbd072630
+940, 0x809c986d
+941, 0x8e2c27d2
+942, 0xf14d28b3
+943, 0x3396aa31
+944, 0xa24dac47
+945, 0x8c6bbf5a
+946, 0xde06adb1
+947, 0x85074fee
+948, 0xf0b1951d
+949, 0x5949d203
+950, 0xc032204a
+951, 0x64d7e54
+952, 0xb31759ea
+953, 0x2619ad41
+954, 0xf7cc9777
+955, 0x21c10e14
+956, 0xfe910cd0
+957, 0xb53a142a
+958, 0x73aa95f2
+959, 0xb585c01c
+960, 0x1224859a
+961, 0x9c9b8b57
+962, 0x4af48cb4
+963, 0xac021930
+964, 0x2700b7c2
+965, 0x72906666
+966, 0x6ae06309
+967, 0xb2321d02
+968, 0x219c2d74
+969, 0x60d9fb6c
+970, 0x9aa776e9
+971, 0x199bb359
+972, 0x61ffb57c
+973, 0xf5d36375
+974, 0xe5380264
+975, 0x128b105a
+976, 0xf7c16444
+977, 0x4f0e269
+978, 0x8c00a60a
+979, 0xfac5500c
+980, 0x465ad668
+981, 0x2602a8e1
+982, 0x979c69a5
+983, 0x423a50a7
+984, 0xe59223a0
+985, 0x372ce57a
+986, 0x681fad21
+987, 0x9475239a
+988, 0x8d550063
+989, 0xf9cadcd9
+990, 0x458b0932
+991, 0x45e3e958
+992, 0x7497fcd2
+993, 0xf856d714
+994, 0x66d6b2de
+995, 0x686fe9c
+996, 0x3f980648
+997, 0xe356d512
+998, 0x81807599
+999, 0xb5676398
diff --git a/numpy/random/tests/data/pcg32-testset-1.csv b/numpy/random/tests/data/pcg32-testset-1.csv
new file mode 100644
index 000000000..6bddc8d5c
--- /dev/null
+++ b/numpy/random/tests/data/pcg32-testset-1.csv
@@ -0,0 +1,1001 @@
+seed, 0xdeadbeaf
+0, 0xbeb77374
+1, 0x75cad014
+2, 0xabc6773e
+3, 0xe99a034e
+4, 0x1e3f5c6d
+5, 0x513d3c5b
+6, 0x4a378bad
+7, 0xba5b3488
+8, 0x21e96448
+9, 0x5197a3d3
+10, 0x84bbcc90
+11, 0x674fce76
+12, 0xd1dd9879
+13, 0x1625afd4
+14, 0x4bb5e330
+15, 0x3f4b8f74
+16, 0xf0a7c00b
+17, 0xecdb92d0
+18, 0xf069232c
+19, 0x56dbeaa2
+20, 0x70c62231
+21, 0x6c68e57e
+22, 0x3829213c
+23, 0x9b8bc5e6
+24, 0x45abd553
+25, 0xf5991ce7
+26, 0xb4aff20a
+27, 0x677a5785
+28, 0x108f180d
+29, 0x2b3f1001
+30, 0x838fdfcb
+31, 0x8ad3c2a0
+32, 0x596268fa
+33, 0xee6bcc56
+34, 0x46810af0
+35, 0x1648a587
+36, 0x7265a926
+37, 0xed0f3acc
+38, 0x72a1ac0
+39, 0xb3f7109f
+40, 0x6ddd75f2
+41, 0xa968127f
+42, 0x40df20fd
+43, 0xde835b80
+44, 0xe453cd68
+45, 0x26ad68eb
+46, 0x23a052d2
+47, 0x17881c5c
+48, 0x785d41b9
+49, 0x61b4530a
+50, 0x5ee92c84
+51, 0x4cad7358
+52, 0x843db584
+53, 0x3576368b
+54, 0x14db6b2b
+55, 0xb6e8b042
+56, 0x6323e866
+57, 0x9a709e25
+58, 0xae594bdc
+59, 0x4be9ec1b
+60, 0x77b4fd05
+61, 0x4421667
+62, 0x24bf98f7
+63, 0xfb202aed
+64, 0x2f01b05f
+65, 0xac766e69
+66, 0xc1572ce2
+67, 0xb26354d6
+68, 0x4db5f193
+69, 0x41a4609b
+70, 0x26bbb4cc
+71, 0x676b7438
+72, 0x13b2be7d
+73, 0x7df521c4
+74, 0x57f770f3
+75, 0x78a8a8
+76, 0x164d46c6
+77, 0xbb29da20
+78, 0x5c262bf9
+79, 0xfd305d0
+80, 0xb500d90b
+81, 0xbb7b4e37
+82, 0x5ba2bbfd
+83, 0xa9561043
+84, 0xe175c662
+85, 0x3a5c8eec
+86, 0xac5e2184
+87, 0x1e1c7de7
+88, 0x46be092a
+89, 0x8b82f5be
+90, 0xb1c1b591
+91, 0x6f06d957
+92, 0x1d26dc5c
+93, 0x158c57e3
+94, 0x6da1ebf8
+95, 0x74501e60
+96, 0x70587043
+97, 0xa19b90fe
+98, 0x7d327dff
+99, 0x22dc6b90
+100, 0xf48a9ae6
+101, 0x75eeb769
+102, 0x9cdc12cb
+103, 0x7fe2cdc6
+104, 0x4fba8066
+105, 0x1a7a0667
+106, 0xd9289d22
+107, 0x3a045bce
+108, 0x60e5f71f
+109, 0xd81b35dc
+110, 0xceae6194
+111, 0xa032a688
+112, 0x7157b327
+113, 0x61c74c80
+114, 0x2d519c39
+115, 0x5b1a352e
+116, 0x5ad266da
+117, 0x9118352b
+118, 0xdd20b6e1
+119, 0xc0d154fa
+120, 0x93bbb9c9
+121, 0x91170de2
+122, 0xa3af5e05
+123, 0x1b19ff2f
+124, 0xf814c3bf
+125, 0x8914a953
+126, 0x5278efb7
+127, 0x3c96d7bd
+128, 0xb5422a7
+129, 0x2aee2619
+130, 0x60c6a90c
+131, 0xfbec0e9c
+132, 0xef794075
+133, 0xda93d22e
+134, 0xb956d02a
+135, 0xd97cc49b
+136, 0x80737244
+137, 0x7c56a95
+138, 0xa5311355
+139, 0x7dcdd592
+140, 0x92add23e
+141, 0xb1ba1317
+142, 0x507e5330
+143, 0x2644b95a
+144, 0xa1afa519
+145, 0x596c65c0
+146, 0x6f47dd11
+147, 0xfd2fbada
+148, 0x98675d7c
+149, 0xb9e21413
+150, 0x8bae5eca
+151, 0xe1f50018
+152, 0x7dd08715
+153, 0x36a888e1
+154, 0x7fcd6364
+155, 0xb84c093
+156, 0x18e2d58f
+157, 0x19fd21ed
+158, 0x3c25e3a3
+159, 0x7a0d833b
+160, 0x47525b28
+161, 0xba88474
+162, 0xd108e7da
+163, 0x32b06660
+164, 0xbce027b3
+165, 0x96b31787
+166, 0x916ab263
+167, 0xa5fa088
+168, 0x3cb9cd59
+169, 0x7a97051f
+170, 0x104b6883
+171, 0x6e08c314
+172, 0x33a4c62c
+173, 0x14eb854
+174, 0x873f730a
+175, 0x8c3f7224
+176, 0x9a41beeb
+177, 0xe4e2ab0a
+178, 0xfa89ad0e
+179, 0x4aa62ac3
+180, 0xb75dc1bf
+181, 0x3f4c5131
+182, 0x3fef0f91
+183, 0xffa06655
+184, 0x417d7d38
+185, 0x1e7734df
+186, 0x25685235
+187, 0x33fe5b68
+188, 0x68923f72
+189, 0x5da45ff
+190, 0xb871df26
+191, 0xd3ffd8c6
+192, 0x1718d862
+193, 0xe127d844
+194, 0xadcdc48a
+195, 0x79ee30cb
+196, 0x931a6cba
+197, 0x9463c42d
+198, 0x9f8d2806
+199, 0xa3695a97
+200, 0xfc9587bc
+201, 0xb3943573
+202, 0x50ed8901
+203, 0x6891f33
+204, 0xb7a12dfb
+205, 0x1245cf5d
+206, 0xbc0f73a7
+207, 0x26cbfeb2
+208, 0x774d8e83
+209, 0xa19e9c1
+210, 0xc147a437
+211, 0xe034f2a3
+212, 0xd288b664
+213, 0xdcd0356d
+214, 0x2b695901
+215, 0x3bc31736
+216, 0x4a5b1998
+217, 0x18537410
+218, 0x11b40f35
+219, 0xf16f6f89
+220, 0xe844cffe
+221, 0xce026166
+222, 0x3770aaba
+223, 0xc62566ee
+224, 0x6db2d1f8
+225, 0xe4720b6d
+226, 0x68321a69
+227, 0x488539ac
+228, 0x5e18ab61
+229, 0xb58e598e
+230, 0x6f501a91
+231, 0xc4fd3e8d
+232, 0x9faa3631
+233, 0x184366b0
+234, 0xecf74d6a
+235, 0x3773d622
+236, 0x382ca536
+237, 0x93451381
+238, 0x9f148ed5
+239, 0x2b66f241
+240, 0xa6807c39
+241, 0xbb087446
+242, 0xa18ba432
+243, 0x8e7a6013
+244, 0xab30278e
+245, 0xbf457c78
+246, 0xb24814b1
+247, 0x710f99d5
+248, 0xbcb84762
+249, 0x4913a7e7
+250, 0x90a31a0c
+251, 0x6d4b1673
+252, 0x18873994
+253, 0x1efd517a
+254, 0x99b499d1
+255, 0x2d488776
+256, 0x1cded201
+257, 0xa53b02e4
+258, 0xcb20d0fd
+259, 0x72bfaae3
+260, 0x858c865b
+261, 0x2e2d3e96
+262, 0x8bc5b0b9
+263, 0x8980346a
+264, 0xa8e47fba
+265, 0x2a39fe16
+266, 0x9f34eeeb
+267, 0x7baebcc9
+268, 0xbc0b8d74
+269, 0x37373c8
+270, 0xe128cfc4
+271, 0x49cdb150
+272, 0x5965c726
+273, 0xfc326226
+274, 0x53a3e8e
+275, 0xa99d89f7
+276, 0x33ac111c
+277, 0x143fe678
+278, 0x96212281
+279, 0x6a83bffd
+280, 0x529852f7
+281, 0x97fef4
+282, 0x303ce151
+283, 0x4f8c7b83
+284, 0xd5ef9c82
+285, 0xede9d572
+286, 0xc03e2c38
+287, 0x89d7f886
+288, 0x21e998b0
+289, 0x58d505cf
+290, 0x5c42089
+291, 0x9a01dcab
+292, 0x83d8cc17
+293, 0x7d6aacf
+294, 0xa1cbdced
+295, 0x47365e25
+296, 0xbb61e976
+297, 0xfeafd0a6
+298, 0x760d82b4
+299, 0x9ffb351d
+300, 0x28e19ac0
+301, 0x891131c6
+302, 0xc1656522
+303, 0x4536d90
+304, 0x956b1b84
+305, 0xf9ff54f6
+306, 0xb0050d88
+307, 0x7d7fafa2
+308, 0x430e670b
+309, 0x18ad450d
+310, 0xd5a1d6b6
+311, 0x390a6da4
+312, 0xc70d557d
+313, 0xd8fadb5e
+314, 0xfb4b4cb6
+315, 0xce707f8b
+316, 0x4c18d350
+317, 0x8dc0d200
+318, 0x228d9e85
+319, 0xd6485ba3
+320, 0x37c4a70a
+321, 0x9d7cc5f5
+322, 0x889a9b9
+323, 0x41d2f942
+324, 0x4c13b3bd
+325, 0x70e58147
+326, 0x4a0e1270
+327, 0x3cdc1b73
+328, 0x7a4e56f3
+329, 0xd8350406
+330, 0x46068108
+331, 0xfc4da48
+332, 0xf6111245
+333, 0x40a15167
+334, 0x38a591ac
+335, 0x3e97e682
+336, 0x5c515d2d
+337, 0x45023a37
+338, 0xacb0ed6a
+339, 0x899f0ebb
+340, 0x2054df01
+341, 0x6d629607
+342, 0x79ced597
+343, 0xba0a3a12
+344, 0xde63b611
+345, 0x228cb776
+346, 0x61f10dba
+347, 0x9a1095d3
+348, 0xf08dcb3
+349, 0x88e58009
+350, 0x131880aa
+351, 0xc55002ee
+352, 0xcf556f47
+353, 0x17b6dd76
+354, 0x6110ba20
+355, 0x74a91935
+356, 0xe83cf9ed
+357, 0x3138e936
+358, 0x103bfb72
+359, 0x2084abe4
+360, 0xf3a05dd9
+361, 0x9213f3a4
+362, 0xe7674dd7
+363, 0xcd09d629
+364, 0x260461f2
+365, 0x411c2428
+366, 0xbb5f6f2e
+367, 0x6feb8c93
+368, 0x3cde3ece
+369, 0x7a424d2c
+370, 0x808a0948
+371, 0x653c3fdf
+372, 0x26f88849
+373, 0xf540b6ae
+374, 0x1f82e8ac
+375, 0x300f7e39
+376, 0xb6e62e7b
+377, 0x970441a1
+378, 0x91f2946c
+379, 0xaad281f
+380, 0x43be1dcf
+381, 0x95a1b4c8
+382, 0x2d956dea
+383, 0xc532ca29
+384, 0xc93f1fcf
+385, 0x70762aab
+386, 0x231a72ef
+387, 0xe5bd1b75
+388, 0xfa31468
+389, 0x77e1b7b5
+390, 0x19d80215
+391, 0xd45704b7
+392, 0x33472a0d
+393, 0x833a435e
+394, 0x2354a326
+395, 0x8af39828
+396, 0x603a7960
+397, 0x288c2d54
+398, 0x75bd7c23
+399, 0xe2dd42e1
+400, 0x9a87b486
+401, 0x32e9bcd1
+402, 0x8630f74f
+403, 0x160408ea
+404, 0xd2127c63
+405, 0xaf327f8e
+406, 0x8d879a61
+407, 0xc5c88f60
+408, 0x53a19fa1
+409, 0x706dacb4
+410, 0xd04ea0f
+411, 0x94806c1a
+412, 0x941cfe69
+413, 0x956a5562
+414, 0xee1f71c
+415, 0xe6ba12d
+416, 0x333e31f6
+417, 0x17aee12e
+418, 0x20ccfedb
+419, 0xd7bb7f92
+420, 0xba7d14f3
+421, 0xb935d4fb
+422, 0xbdb8f5e1
+423, 0xb24e7adc
+424, 0xc9abef71
+425, 0x3e3d8125
+426, 0x5fc0878b
+427, 0x5ba172d9
+428, 0xe28f648c
+429, 0x5137f3a7
+430, 0xb57273df
+431, 0xe68df236
+432, 0xbc29802b
+433, 0xb1419e66
+434, 0x69ecb739
+435, 0x490e8eb6
+436, 0x61e25a6c
+437, 0xc1fa0de6
+438, 0x2bf2fbf1
+439, 0x9487e8da
+440, 0xce5c5532
+441, 0x75859040
+442, 0x2606bdeb
+443, 0x1b77c072
+444, 0xe5fbeed1
+445, 0xea9e1ab3
+446, 0x55cf96ae
+447, 0x283ed27d
+448, 0xc94067a1
+449, 0x8687b3e5
+450, 0x4031b307
+451, 0xc5790e82
+452, 0x4031ee7f
+453, 0x952c4503
+454, 0x379ec606
+455, 0x7c35e19d
+456, 0x2d333769
+457, 0xbca36d54
+458, 0xcdc70741
+459, 0xa3ab56fb
+460, 0x187a2fd6
+461, 0xdd1f32f1
+462, 0xc007ac56
+463, 0x14c441c1
+464, 0xf290ed47
+465, 0xc833edac
+466, 0x13f0a8fe
+467, 0x63c10b6e
+468, 0x6af1be34
+469, 0x5bd4930e
+470, 0xfe56bfbb
+471, 0x1b412c8e
+472, 0xf0c7712a
+473, 0xf3a96226
+474, 0xbd0aaad8
+475, 0xbd00355e
+476, 0x8ba9eca1
+477, 0x81f136a0
+478, 0x7de3a327
+479, 0x7be298ea
+480, 0xe60e320a
+481, 0xaf4373b
+482, 0x6eacbf3
+483, 0x1291760f
+484, 0xd48ed89b
+485, 0x596603d4
+486, 0x53abc8
+487, 0x82123b2f
+488, 0x1276dc8
+489, 0xfeb474bb
+490, 0x4013da51
+491, 0x111cb9d6
+492, 0x5726df82
+493, 0x45806861
+494, 0x2580801a
+495, 0x1326049e
+496, 0xb9474bf9
+497, 0x6c5d85ed
+498, 0x9c4a9352
+499, 0x9eb915ed
+500, 0x914505
+501, 0xd14c5b9a
+502, 0x57ef8ffd
+503, 0x480d8719
+504, 0xb18d7fce
+505, 0xfd29e178
+506, 0x2679f6c9
+507, 0xd94a086e
+508, 0x6e46f559
+509, 0xb7c3a2e3
+510, 0x793a4c3b
+511, 0x4e5252f9
+512, 0x1bdb53a4
+513, 0xbed5794
+514, 0x31a3ebc7
+515, 0xa6eb54e1
+516, 0xc6ae5d92
+517, 0x392acfc8
+518, 0xb283fb8f
+519, 0x80b15ffe
+520, 0x763b49a8
+521, 0x3febc1d3
+522, 0x60f2b20
+523, 0xd93aeba9
+524, 0xeddf06bb
+525, 0x13992ab3
+526, 0x4521bcf6
+527, 0x5ad82a14
+528, 0xf2bfc79c
+529, 0xf664b9b
+530, 0xeb9540a2
+531, 0x5641dc50
+532, 0x9282d9c4
+533, 0x5d2443a4
+534, 0x407b5011
+535, 0x84a415d7
+536, 0x5db90eae
+537, 0xd2947d4c
+538, 0x8bd8856d
+539, 0xbc05a99b
+540, 0x1c2e0f5
+541, 0xb94d03a2
+542, 0xb8ed5ac1
+543, 0x199943d9
+544, 0x12482e5c
+545, 0x20aa7c9f
+546, 0x8733e45c
+547, 0x277b4f44
+548, 0x673d5a73
+549, 0xabc0aad9
+550, 0xbed6cd98
+551, 0x2943c24b
+552, 0x5237d6f9
+553, 0x1cb1a392
+554, 0xc7b69454
+555, 0x4f792707
+556, 0xa32ef400
+557, 0x7a5b6b72
+558, 0xa8683acc
+559, 0x418d0491
+560, 0x56e2470e
+561, 0xbe385495
+562, 0xe7944341
+563, 0x438abaab
+564, 0x82ad2c2
+565, 0x7afc306b
+566, 0xfcb88957
+567, 0x530414bd
+568, 0x2e3c7d41
+569, 0x633f7573
+570, 0xeffeefb2
+571, 0xf6de11f9
+572, 0x337710f2
+573, 0x88bf46dc
+574, 0x6fdaf5dc
+575, 0x34229d26
+576, 0x46b0aba0
+577, 0x78e40a29
+578, 0x7f9623cd
+579, 0x6cfe8779
+580, 0x1d4af99
+581, 0x78f97244
+582, 0xa198d714
+583, 0x9124883e
+584, 0x1cf88a12
+585, 0x69fe0966
+586, 0x78484a68
+587, 0xf9d8718b
+588, 0xcbf3ba5b
+589, 0xf67fb149
+590, 0xc95977c1
+591, 0x474f57f5
+592, 0x11bb9ec1
+593, 0xe28f21be
+594, 0x8ca6e21b
+595, 0x2609defc
+596, 0x989b6f6b
+597, 0x1c87383e
+598, 0xacd78f57
+599, 0x8c46cfcb
+600, 0xc37cce08
+601, 0x327d196a
+602, 0xf63c3572
+603, 0xc56780b5
+604, 0x9ac37d16
+605, 0xe692a39c
+606, 0x563938a3
+607, 0x1e80e32f
+608, 0x745652af
+609, 0xe425c9a8
+610, 0x11c71e82
+611, 0x9c721f6d
+612, 0xef89b973
+613, 0x494c7e80
+614, 0xadc29895
+615, 0xc7ee35ad
+616, 0x19beeb0c
+617, 0x9c25ae3f
+618, 0x27bf930f
+619, 0x223970a0
+620, 0x7cdb17ca
+621, 0xa49054f
+622, 0xf8321dcb
+623, 0x3f96a9eb
+624, 0x4468072a
+625, 0xfd7d727
+626, 0xee0af4f1
+627, 0xe6585512
+628, 0x56a6d8a1
+629, 0x40586642
+630, 0xb46bdaa0
+631, 0xe053a140
+632, 0x4de1953d
+633, 0xb6cbc718
+634, 0x2ed92c19
+635, 0x9da2840
+636, 0x6ab418b1
+637, 0x179f64cf
+638, 0x7c281c0
+639, 0x7015b62a
+640, 0x8d31e38e
+641, 0xa6de57ca
+642, 0xe509c4e1
+643, 0xa010162c
+644, 0xf71abd42
+645, 0x3d24ac8b
+646, 0xc2deb72f
+647, 0xd81570ba
+648, 0x17fc7d15
+649, 0xf17997b6
+650, 0xfa2ec5b5
+651, 0xbf7e189b
+652, 0xb3d9e761
+653, 0xe1194bd1
+654, 0x8d5280dd
+655, 0xdea2d148
+656, 0x6d85e66c
+657, 0x37f5fb07
+658, 0x65c1dd1
+659, 0xf52c04f8
+660, 0x4460d846
+661, 0x1729f55f
+662, 0xe03a699d
+663, 0x9f05ff9f
+664, 0x31abe986
+665, 0x64899f61
+666, 0x52fba7
+667, 0x2833ce74
+668, 0xa34d0e57
+669, 0x7203d492
+670, 0x1a63d91e
+671, 0x463781b7
+672, 0xf9842e7b
+673, 0x809276ad
+674, 0x88237b9d
+675, 0xaa648b06
+676, 0x9cf916bd
+677, 0x3b3068e4
+678, 0x20d6ae7d
+679, 0x7855dafd
+680, 0x9ebd14ed
+681, 0xc5934a1c
+682, 0xb3c421a1
+683, 0xa2b709a2
+684, 0x91fa8b34
+685, 0x9009a54
+686, 0xb2c4215f
+687, 0x7b294eb1
+688, 0x1802911e
+689, 0xa2067de5
+690, 0x5ebd85e9
+691, 0xc4f8e698
+692, 0xd143d368
+693, 0x2ca2b6fb
+694, 0xb5d27ebc
+695, 0x410146ca
+696, 0x9d6948fe
+697, 0xfafd0af5
+698, 0x290e9c5f
+699, 0x2ff06292
+700, 0x417903d5
+701, 0xc51af07c
+702, 0xd2bbaf6b
+703, 0xfa3720f1
+704, 0x4a6eb52d
+705, 0xed86ad3c
+706, 0x72a8676e
+707, 0xc3c2bbed
+708, 0x62b6a951
+709, 0xe08f9534
+710, 0xe2686ea5
+711, 0x3dbbf99b
+712, 0xfec5319f
+713, 0xef9c67eb
+714, 0x9d69d19b
+715, 0xc732ed2
+716, 0xc6e829bd
+717, 0xe712e882
+718, 0xd24594ca
+719, 0x102b8426
+720, 0xa5145730
+721, 0x62fecd71
+722, 0xe6439ca2
+723, 0x58819419
+724, 0xef722791
+725, 0x5ef6ab17
+726, 0x85ce3714
+727, 0xd4e18303
+728, 0xf91eb9c2
+729, 0x86bae692
+730, 0x6d81c21c
+731, 0xd9985982
+732, 0xfdd55f22
+733, 0x72ecd91a
+734, 0x4b1cee6
+735, 0xefa672ec
+736, 0x3f18114f
+737, 0xacae5e62
+738, 0x68369afd
+739, 0xff5e6612
+740, 0x3760af8c
+741, 0xd8c878bf
+742, 0x3945fe59
+743, 0x2cf7f99a
+744, 0x2cc59bb4
+745, 0xbba95cd6
+746, 0x6511688d
+747, 0xcf326178
+748, 0xf850cc68
+749, 0x4bd2540e
+750, 0xa02cf5e5
+751, 0x5546fcb5
+752, 0xe2b289fd
+753, 0x960c6ba
+754, 0x3a2c9d74
+755, 0x2def7a8f
+756, 0x54e57d43
+757, 0xf953c277
+758, 0xd9b414b1
+759, 0x19a25920
+760, 0xaf2691a1
+761, 0x81e88159
+762, 0x49a3eab
+763, 0x276a797d
+764, 0x98337885
+765, 0x37055fd0
+766, 0x6927effc
+767, 0xb6de7fc0
+768, 0x9e920f9a
+769, 0xd2dc9145
+770, 0xe2861109
+771, 0xe42e2c1e
+772, 0x836fe968
+773, 0x23452a15
+774, 0xd49f0e2b
+775, 0x2998f647
+776, 0x94f8c803
+777, 0xf8be479e
+778, 0xfd44079f
+779, 0x685ab9c1
+780, 0xea8eeab3
+781, 0x580ff5d8
+782, 0x88ad0666
+783, 0x19df5d86
+784, 0xe4862012
+785, 0x3ad25460
+786, 0x677449ce
+787, 0x1c7e0b9a
+788, 0x287a98d0
+789, 0xed39d094
+790, 0x40501707
+791, 0xb99073a4
+792, 0x31847bd4
+793, 0x91e5b7
+794, 0x46815e56
+795, 0xc823384c
+796, 0xdb6fb24
+797, 0xabe50dd8
+798, 0x2a33797b
+799, 0x4fb617ec
+800, 0x811a36df
+801, 0xb6b7a25f
+802, 0x8962cd0a
+803, 0xc40818fe
+804, 0x5dbe4e57
+805, 0x591f6c61
+806, 0x22aa4809
+807, 0xc0e4a72
+808, 0xa8a0e2e7
+809, 0xf91d553a
+810, 0x77674da7
+811, 0x196657d6
+812, 0x5ae38c0f
+813, 0x8bcf1ed2
+814, 0x9e0a2c8f
+815, 0xf94e5215
+816, 0x11299b2b
+817, 0xc499eca3
+818, 0x25e58d1b
+819, 0xdd722954
+820, 0x816f4c21
+821, 0x2504fd9b
+822, 0x722a597a
+823, 0x92f80aab
+824, 0xe2d7e54d
+825, 0xefb26dba
+826, 0x9ebf8863
+827, 0xd297ec21
+828, 0xa0ebfbb5
+829, 0xec609873
+830, 0xd079b3d1
+831, 0x920f722d
+832, 0xfd58146
+833, 0x5fbb5784
+834, 0x30187f5d
+835, 0x887f4ec6
+836, 0x6839a2ed
+837, 0x72bccd98
+838, 0x7565903e
+839, 0x8d3afaef
+840, 0xfb713a03
+841, 0x34216b35
+842, 0xbe0da7e9
+843, 0x4b11764e
+844, 0x6666922a
+845, 0x3f2dc90d
+846, 0xeca8fb8d
+847, 0x91579404
+848, 0x8d413df7
+849, 0x2a0f8307
+850, 0x39d5a495
+851, 0x79ba5e62
+852, 0xbb06fd0f
+853, 0x47ba4208
+854, 0x4a2efb9c
+855, 0xee3a07f0
+856, 0x291a73e0
+857, 0xe42a46c5
+858, 0x203455b2
+859, 0x40545253
+860, 0xa618bb0a
+861, 0xd4792a15
+862, 0xd6e62559
+863, 0x8149e2f0
+864, 0x5f6499a9
+865, 0xa63fc585
+866, 0xe33e1c1f
+867, 0x36ecb45b
+868, 0x267883ca
+869, 0x905d98fb
+870, 0xfac3512c
+871, 0x374d0a0e
+872, 0x9920f3e0
+873, 0xfb961c9f
+874, 0x70f2d752
+875, 0x69c44d12
+876, 0xcb6075d2
+877, 0xaf802ac8
+878, 0x2c4b792b
+879, 0xa2203217
+880, 0xc2c15619
+881, 0xb13af213
+882, 0x759b165c
+883, 0x411ecdf2
+884, 0x158e5fba
+885, 0x70874450
+886, 0x226a484f
+887, 0x87b95ecf
+888, 0x45cef22f
+889, 0xfaf186bd
+890, 0x3544972a
+891, 0xb4a2f73
+892, 0x5f5d10de
+893, 0xf3d05e29
+894, 0x7616ba85
+895, 0x4d2e198
+896, 0x1f240293
+897, 0x317c2286
+898, 0x3bd97e7b
+899, 0xd7e39d6f
+900, 0x142ee43c
+901, 0x688ada72
+902, 0xad8deac8
+903, 0xf7cc8d5e
+904, 0xa84600f5
+905, 0xda6b1b3
+906, 0x5bad09de
+907, 0x6f4276c7
+908, 0xa789933f
+909, 0xede4329a
+910, 0xa31f2df5
+911, 0x869c0c3c
+912, 0x6658f5b
+913, 0xdb451b7c
+914, 0x16ec0b18
+915, 0x2e35872c
+916, 0xf7bf3c44
+917, 0xda59c872
+918, 0x1ab63c0c
+919, 0x9a361a82
+920, 0xd2e1afcc
+921, 0x5c41ac55
+922, 0xd1d761db
+923, 0x3639bb85
+924, 0x7a418cfb
+925, 0xf0b06b8f
+926, 0xa2ef4d47
+927, 0x4fac4d1b
+928, 0x47e42283
+929, 0x6ee6a7df
+930, 0xfe786975
+931, 0x4475b665
+932, 0xd881e311
+933, 0x6b02224
+934, 0xcba19b84
+935, 0x4efa35f6
+936, 0x3873a72d
+937, 0x984d7964
+938, 0xe23cda62
+939, 0xea9949d2
+940, 0x243b83b1
+941, 0x48d1bcc4
+942, 0xe35b6a23
+943, 0x125288f1
+944, 0x72fdd401
+945, 0xa2af6873
+946, 0x7c211096
+947, 0xa00a13dd
+948, 0x7b4ce5d6
+949, 0x1e4be120
+950, 0xc771cc00
+951, 0x343ae31
+952, 0xe8e0be50
+953, 0xd9095a3f
+954, 0x616b7c17
+955, 0xa96e1580
+956, 0x60501426
+957, 0xeaac50b
+958, 0x130c33b5
+959, 0xba30925b
+960, 0xf942c440
+961, 0xc52e8e20
+962, 0x5f460318
+963, 0x94e1dadd
+964, 0xdfa4f20e
+965, 0xc9bbd26a
+966, 0x75322ecb
+967, 0x3dc3ff18
+968, 0xfa896826
+969, 0xe4ad213c
+970, 0x7a0f97c3
+971, 0xd7b7b08f
+972, 0x6ebcab4e
+973, 0x1a37d816
+974, 0x16299fee
+975, 0x89d94a3a
+976, 0x11c2f073
+977, 0x4ef27a32
+978, 0xaaf42781
+979, 0x9862c844
+980, 0xaa672e94
+981, 0xba4f2690
+982, 0x1f767d21
+983, 0x157e1a5e
+984, 0x5b6de343
+985, 0xc494501e
+986, 0xe97b507b
+987, 0x98cae4c8
+988, 0xc4a6b036
+989, 0x746f8686
+990, 0xe761c86
+991, 0xefdaaa15
+992, 0xb907b816
+993, 0xe9d05992
+994, 0xed2e1b0e
+995, 0xe129d3ee
+996, 0xb41bb95f
+997, 0xaec36181
+998, 0xdcdcf5f0
+999, 0xf175572a
diff --git a/numpy/random/tests/data/pcg32-testset-2.csv b/numpy/random/tests/data/pcg32-testset-2.csv
new file mode 100644
index 000000000..2d4c8aed1
--- /dev/null
+++ b/numpy/random/tests/data/pcg32-testset-2.csv
@@ -0,0 +1,1001 @@
+seed, 0x0
+0, 0xe4c14788
+1, 0x379c6516
+2, 0x5c4ab3bb
+3, 0x601d23e0
+4, 0x1c382b8c
+5, 0xd1faab16
+6, 0x67680a2d
+7, 0x92014a6e
+8, 0x628ae389
+9, 0xa794034d
+10, 0x5cc38cd9
+11, 0xfc913a3b
+12, 0x81c851dc
+13, 0x90c820e4
+14, 0x60dfa703
+15, 0xd613ae14
+16, 0x38ea1699
+17, 0x51f04d1b
+18, 0xc4ef01a1
+19, 0x321eec02
+20, 0x4c37a737
+21, 0x6bfd1aa8
+22, 0x71a28325
+23, 0x4656d6e9
+24, 0x17509653
+25, 0x830bd521
+26, 0x6d35e3aa
+27, 0x4ab85020
+28, 0x21c1da2c
+29, 0x6a6057a2
+30, 0xf3a90dc1
+31, 0xa1cbdcd9
+32, 0xf70b61bf
+33, 0x3b2b09a8
+34, 0xbc2ef54d
+35, 0xce07f38f
+36, 0xb51bc60b
+37, 0x729efb83
+38, 0x7e4a5f66
+39, 0xdd824ead
+40, 0x9be85945
+41, 0x57f8779c
+42, 0xdb449e87
+43, 0xc0be253f
+44, 0x18b4267e
+45, 0xff78821
+46, 0xb53e3425
+47, 0x4550b21b
+48, 0xefe89a4c
+49, 0x74c130b9
+50, 0x1656a3a0
+51, 0x194da2a6
+52, 0x1a6cdb1d
+53, 0x7c1fd58e
+54, 0x3162d1e9
+55, 0x3e2f2c7d
+56, 0xb0ab9b5c
+57, 0x79156d4d
+58, 0x97b85150
+59, 0x967a02ce
+60, 0x1e64548d
+61, 0x4196d24a
+62, 0xd047eef5
+63, 0x8451cc3c
+64, 0x7227eb94
+65, 0xb1191064
+66, 0x82e162d0
+67, 0xb473f07d
+68, 0x92ea0426
+69, 0xbf2a25fa
+70, 0x9935be52
+71, 0x28baec93
+72, 0xa29368b5
+73, 0xe3d6d97d
+74, 0x85ecf1d4
+75, 0x482e4bc8
+76, 0xe4f22219
+77, 0x7531047
+78, 0x3c41ef1f
+79, 0x19db5112
+80, 0xc1534caf
+81, 0x6c45710a
+82, 0xb323c369
+83, 0x2dac53c6
+84, 0xd5dc48b4
+85, 0x1dc6d7a1
+86, 0x3ae2bc10
+87, 0x6a7635e8
+88, 0xdeee7b7f
+89, 0xcb705cd3
+90, 0xba11e537
+91, 0xb64a4936
+92, 0xff4b245e
+93, 0x39cb1219
+94, 0x64833e10
+95, 0x76b0f975
+96, 0x333d7c7d
+97, 0x88ccfb17
+98, 0xad78dace
+99, 0xd82fb71
+100, 0x1595d411
+101, 0x47f9d57a
+102, 0xd4dad6cb
+103, 0x78bf16bd
+104, 0x71b053d2
+105, 0xa4bb076e
+106, 0xd7c57664
+107, 0x3fbcbf8f
+108, 0xc816befc
+109, 0x6df46890
+110, 0xd16f271f
+111, 0xeeeb1571
+112, 0x58222e89
+113, 0xa55e81d3
+114, 0xafbe7622
+115, 0x938475a8
+116, 0xd8740af2
+117, 0xf937dbd7
+118, 0x7d3940fa
+119, 0x694c55f2
+120, 0x2261fb68
+121, 0x6ce39e94
+122, 0xab43634
+123, 0xd92ff7c4
+124, 0xe8db22d
+125, 0x52e250b1
+126, 0xaf0f7029
+127, 0xc23dd3a
+128, 0xd66dc2b9
+129, 0xea7f01f3
+130, 0x4df54b3f
+131, 0xf1eff09c
+132, 0x2813663e
+133, 0x21ae8115
+134, 0xb00d790d
+135, 0x11e6adbb
+136, 0x61005f4c
+137, 0x3de17bf0
+138, 0x7b2050b9
+139, 0xe20dd275
+140, 0xafa0bdcc
+141, 0x9c6d4c6c
+142, 0xe938606
+143, 0x8eecdd8f
+144, 0xea9a90a9
+145, 0x99cbb123
+146, 0x16fccad1
+147, 0x7e81fdd9
+148, 0x116e6abd
+149, 0xdeb9ff4e
+150, 0xc589f525
+151, 0x57d701a9
+152, 0xcf05e950
+153, 0x533a2839
+154, 0x12d592e7
+155, 0xae61f43f
+156, 0x419ae221
+157, 0x81126e0a
+158, 0xc3988c97
+159, 0xb3262eaa
+160, 0x3baddf9e
+161, 0xf19d8a16
+162, 0x2a8b130f
+163, 0xe4c9ccea
+164, 0xf5ae2ea
+165, 0x75aaa98d
+166, 0xdd45ce49
+167, 0x98e0d4f6
+168, 0xb1ec10a1
+169, 0xc9592952
+170, 0x23bb1f45
+171, 0xd0827b45
+172, 0x7a79b800
+173, 0x9d1b8348
+174, 0xe2958863
+175, 0x5143e17e
+176, 0x44110af9
+177, 0x49d76858
+178, 0xdba4688e
+179, 0x4e4d61dd
+180, 0x729b81cc
+181, 0xf3576e03
+182, 0x9b028e9d
+183, 0x68d8d869
+184, 0xda15e018
+185, 0x5384abb2
+186, 0x1027ed5e
+187, 0xaf5401f1
+188, 0x31411375
+189, 0xc75d87be
+190, 0xad73f5fd
+191, 0xadb3add7
+192, 0x4d5452ee
+193, 0xdef42029
+194, 0x89d58a78
+195, 0x464d6b4a
+196, 0xd01f533a
+197, 0xb9533dd4
+198, 0x55c5d023
+199, 0x3dcf8fef
+200, 0x198395ca
+201, 0x7cdca51c
+202, 0x6f4074f
+203, 0xb9f79995
+204, 0xbbe3d9a5
+205, 0x520d417e
+206, 0x9a8df0bd
+207, 0xe390f486
+208, 0x5b578b3f
+209, 0xb4cdf767
+210, 0x12d45034
+211, 0xe661e293
+212, 0x70cd3e91
+213, 0xdbc7f190
+214, 0x49829849
+215, 0x12017fbe
+216, 0x1e35bf48
+217, 0x1effc3c7
+218, 0xe1f574cb
+219, 0xf613ab7d
+220, 0xd09d16fa
+221, 0xa58bcf5a
+222, 0xac39afdc
+223, 0xd611d1ab
+224, 0x36edd3b2
+225, 0xd9ea5d98
+226, 0xf6f2fce4
+227, 0x42cb31ce
+228, 0xdd1f6530
+229, 0x3e43a7d0
+230, 0x175ec7fc
+231, 0x8077af4b
+232, 0x37cbcc22
+233, 0x26a89f
+234, 0x998c930e
+235, 0xb84e5f21
+236, 0x83817130
+237, 0x2ad05d66
+238, 0x48f3b861
+239, 0xd69f626
+240, 0x1d09f12
+241, 0xf207e7f0
+242, 0xcc709acc
+243, 0x1b2881d7
+244, 0x7e18cc6c
+245, 0xbfd9589c
+246, 0xce0d301e
+247, 0xc8668b4b
+248, 0x584482bd
+249, 0x722e14ae
+250, 0xd79dfcff
+251, 0xcc7e9c21
+252, 0xd081f540
+253, 0x3b49f7fa
+254, 0xf23efb2a
+255, 0xfd7fe8f8
+256, 0x9abcbf25
+257, 0x5b713674
+258, 0x1300e351
+259, 0xe884f0ad
+260, 0x3c290461
+261, 0x4f64c1a1
+262, 0x17c55223
+263, 0xd5953a5f
+264, 0xd85e042e
+265, 0x75dfc597
+266, 0x379edfb
+267, 0x75ebddc9
+268, 0xc19b98e1
+269, 0x1dd1b751
+270, 0xc5760a60
+271, 0x5f6e2f17
+272, 0x29e8610e
+273, 0xb2edd7db
+274, 0x9233eeca
+275, 0xbc02b187
+276, 0xc997bb5b
+277, 0x88ad3a98
+278, 0x3d1167ad
+279, 0xcea54c9c
+280, 0x7ea493eb
+281, 0x586e3aa8
+282, 0xe2e027c7
+283, 0xae50ef9e
+284, 0xd32e0c38
+285, 0xeba0edf6
+286, 0x980ad22a
+287, 0x3b14e644
+288, 0xd7bfbff8
+289, 0xe0af1647
+290, 0x292d72dd
+291, 0xb8c421bb
+292, 0x114d690e
+293, 0x85a86bd
+294, 0x39f2b5e2
+295, 0x7c9c6b43
+296, 0xca387767
+297, 0x84f24ecf
+298, 0x2aec5804
+299, 0x27d0f2
+300, 0xcd7bb6a9
+301, 0xe925969f
+302, 0xc6454099
+303, 0xf7435a9d
+304, 0xf7bc998f
+305, 0xfa81f361
+306, 0xcba07d00
+307, 0x3e8a8a14
+308, 0xf0e7f785
+309, 0x25aecff
+310, 0xe1a90226
+311, 0x4af1339d
+312, 0x983f4fb9
+313, 0xbaec847f
+314, 0x4e504dbb
+315, 0xe7d0be86
+316, 0x73cb80ef
+317, 0x336db698
+318, 0x8bf7de05
+319, 0x36e4e6ba
+320, 0x47a8239b
+321, 0x2a98e1d0
+322, 0x64a6c087
+323, 0x4a8591cb
+324, 0x642d5d67
+325, 0x9f4b84b2
+326, 0x6bdf1176
+327, 0x7e2b1639
+328, 0xc90453f5
+329, 0xe72d0b96
+330, 0x5f0e1d0c
+331, 0x156af798
+332, 0x6124d8e8
+333, 0xaa2f2ad7
+334, 0x145b30b7
+335, 0xd6582106
+336, 0x203abbad
+337, 0x929d8d43
+338, 0x14d5b6dc
+339, 0xef0f4eb2
+340, 0x8ff54463
+341, 0x588113a
+342, 0x1bc43ba6
+343, 0x44f44097
+344, 0xb84cfdc6
+345, 0x3ee638af
+346, 0xdd169321
+347, 0xaaac5f56
+348, 0xbb022bc2
+349, 0xf9ef8bde
+350, 0x2829b2fb
+351, 0x563368fa
+352, 0x82ce66ae
+353, 0x6d820e38
+354, 0xb87a080e
+355, 0x756469af
+356, 0x78086990
+357, 0xa220e762
+358, 0x14ba6bdb
+359, 0xfa775c1b
+360, 0x65fa7396
+361, 0xbae24370
+362, 0x8e42ddb8
+363, 0x1f46b8ac
+364, 0x3c9236c5
+365, 0xd3a2184c
+366, 0x308ba74
+367, 0x5638eb84
+368, 0x64076fe6
+369, 0x37fe334f
+370, 0x8de24732
+371, 0xf0d0b02b
+372, 0x18492b71
+373, 0x848f38ac
+374, 0x9b46dc75
+375, 0xf5d3c06a
+376, 0x203afe47
+377, 0x19857724
+378, 0x38033528
+379, 0xf7fa640c
+380, 0xf1cb86e8
+381, 0x1fcd5b99
+382, 0xb07f1023
+383, 0x3bb9ab75
+384, 0x57f54e78
+385, 0xf5b51d4b
+386, 0xe94eba44
+387, 0xa5a39292
+388, 0x50803af
+389, 0x34ea9cc5
+390, 0xabf621ca
+391, 0xb275f802
+392, 0xf46dffd6
+393, 0xd33e27d1
+394, 0xca9a56e
+395, 0x6eda85a4
+396, 0x639b78ba
+397, 0x799d1980
+398, 0xf3c09bf1
+399, 0x6d4cdbe
+400, 0x112dae8d
+401, 0xd97414b1
+402, 0x9499df3d
+403, 0xa58ece6c
+404, 0xe56bf91b
+405, 0x3bdbfd9
+406, 0x91aae1fd
+407, 0xec1fce54
+408, 0x60e0eced
+409, 0x278d5b22
+410, 0xdee29da2
+411, 0xf1f55d27
+412, 0xd532ab83
+413, 0xb0fe9589
+414, 0x88fcc255
+415, 0xf524359b
+416, 0x7270a00b
+417, 0x42489eaf
+418, 0xc020d6bb
+419, 0xf9ed0f78
+420, 0x4bc5cdec
+421, 0x55061393
+422, 0x6b84a5a4
+423, 0x826c0471
+424, 0x9e69e30d
+425, 0x9dfd9b15
+426, 0xf4014c40
+427, 0xcd04ef4d
+428, 0x7376c02c
+429, 0xb15a9e3c
+430, 0xf76c1fa9
+431, 0xcd51bdd8
+432, 0x99f2859e
+433, 0xb62c6a4d
+434, 0x52239d8b
+435, 0x27fa2869
+436, 0x6dba918c
+437, 0x9891e444
+438, 0x71e29f5
+439, 0xa9cd3ac9
+440, 0xf6ec3b80
+441, 0x8c8d3226
+442, 0x7c528725
+443, 0xd543932b
+444, 0xf76b3e02
+445, 0xeccaf183
+446, 0x8f757854
+447, 0x785edb62
+448, 0x54397da0
+449, 0xe1fe0557
+450, 0x7a79d418
+451, 0xd2740507
+452, 0xc3561bc7
+453, 0xef7c3f18
+454, 0xecf8effe
+455, 0xc7a073ad
+456, 0xeb5ea9fd
+457, 0x33dade18
+458, 0x89d0e41c
+459, 0x7720d298
+460, 0xe912f029
+461, 0x7794462
+462, 0xa436dcf6
+463, 0x55cbb318
+464, 0x7b4a78e0
+465, 0xa8ce0afb
+466, 0x7e18bb28
+467, 0x92c4f8f6
+468, 0x6828052c
+469, 0xbf619f8
+470, 0x272d1d15
+471, 0xb34e2e52
+472, 0x52158f7f
+473, 0x682fb062
+474, 0x52e80435
+475, 0x787e0fb3
+476, 0xe331da39
+477, 0xfad42e58
+478, 0x1bdb3f90
+479, 0xe313ab2
+480, 0xe61af9bb
+481, 0x46f03903
+482, 0x926b3d33
+483, 0x2b23ce3b
+484, 0xed04d4af
+485, 0x34c49faf
+486, 0x142f503c
+487, 0x47cf6a21
+488, 0x5352250c
+489, 0xf5942210
+490, 0xca5950ae
+491, 0xc5302422
+492, 0x41a5e9b1
+493, 0x30076390
+494, 0x8951d0e4
+495, 0xebe74e22
+496, 0xfcb7dbf8
+497, 0xd55076e7
+498, 0x88a1165b
+499, 0x1a89b5a3
+500, 0xda2c3e2e
+501, 0xdc1d606d
+502, 0xfda0315c
+503, 0x5f5610dd
+504, 0x3eba316c
+505, 0x72cae07b
+506, 0x5336095
+507, 0x6a110322
+508, 0x46cb153b
+509, 0xa2b11116
+510, 0xe2543988
+511, 0x51f53bae
+512, 0x3b10466d
+513, 0x189ddd56
+514, 0x1fd355b6
+515, 0x1230e8d3
+516, 0x2050d313
+517, 0x2fbb5c16
+518, 0x64b03f4f
+519, 0xbd6cdc1a
+520, 0x9d423316
+521, 0xc71a702f
+522, 0xf2254f39
+523, 0xd953728b
+524, 0xef3c8bb5
+525, 0x685a2fab
+526, 0xcea73dff
+527, 0x4a7fa029
+528, 0xa27e8058
+529, 0x561a1413
+530, 0x570fc5bc
+531, 0x917e93ee
+532, 0x15fdbb15
+533, 0xabee295e
+534, 0xc40f5307
+535, 0xba18b087
+536, 0x6ea6e339
+537, 0x7e282248
+538, 0x875062c2
+539, 0xd1520c30
+540, 0xb4cef1a5
+541, 0x55812dd1
+542, 0x9c67743c
+543, 0x22fd5992
+544, 0x1dacbfa
+545, 0x5b35eab1
+546, 0xfa8c9316
+547, 0x490bc71c
+548, 0xe5129bfb
+549, 0xe7acb79f
+550, 0x87667765
+551, 0x945be067
+552, 0x8acf5c32
+553, 0x466e0ee
+554, 0x8fa89be0
+555, 0x4eb4afcc
+556, 0x3302055b
+557, 0x8f2e3ab9
+558, 0xc5bc175e
+559, 0x903a3e85
+560, 0x4055dd04
+561, 0x37873bac
+562, 0x2965a951
+563, 0x2206c56a
+564, 0xf34dc2db
+565, 0x34e43ba2
+566, 0xb61caa44
+567, 0xfd3eb260
+568, 0x9dcdc817
+569, 0x7019df83
+570, 0x6fcd9bea
+571, 0x270cba0a
+572, 0xd6cc3241
+573, 0x6345c906
+574, 0xd213fb94
+575, 0x6195e5b5
+576, 0x804abab7
+577, 0xb4cace45
+578, 0xded19bbc
+579, 0x617db00c
+580, 0xafb933d6
+581, 0x8192cae8
+582, 0x45ffd8af
+583, 0x13ae0868
+584, 0x840f4541
+585, 0x12cd1a05
+586, 0xbb5b7d6d
+587, 0x3907ab3
+588, 0xd77a1582
+589, 0x4e741292
+590, 0x28c60865
+591, 0xbaad11e2
+592, 0xa9d3e364
+593, 0x88a197cb
+594, 0xe90f021f
+595, 0x2056017a
+596, 0xeb0a2fd9
+597, 0x1d3435aa
+598, 0xdaa0b802
+599, 0x8121bf09
+600, 0x95a88f55
+601, 0xa8b9c257
+602, 0xb0ab4914
+603, 0xf360b741
+604, 0x5563d4ab
+605, 0xad33cf0e
+606, 0x397d315a
+607, 0x6893767f
+608, 0x79dd5b31
+609, 0xa9ea6777
+610, 0xcf48c06
+611, 0xb4cceafc
+612, 0xf53cab50
+613, 0x72426c8
+614, 0xd128aa5a
+615, 0x511eec88
+616, 0x668ab20a
+617, 0xb9b53dbe
+618, 0x3b03a0fb
+619, 0x8f416a98
+620, 0xaa15b7f6
+621, 0xc7767aba
+622, 0xa64d3342
+623, 0x42cf1388
+624, 0xfc3ee7c0
+625, 0x892a2902
+626, 0xdb054bf6
+627, 0x4973223f
+628, 0xb9f74682
+629, 0x72f2ece
+630, 0xddf94382
+631, 0x67581d86
+632, 0x9cb9cd6f
+633, 0xed74731a
+634, 0xcca05451
+635, 0x3b21fdc0
+636, 0x9e18e52b
+637, 0xa40bb287
+638, 0x8bb05e07
+639, 0xa33555fe
+640, 0x4c819ed
+641, 0x5373903e
+642, 0x611403c2
+643, 0x133e25fb
+644, 0x9c7a44e4
+645, 0x67197b8d
+646, 0xfa910436
+647, 0xa86a825d
+648, 0xfc9b24c1
+649, 0x464a718e
+650, 0x7421bc26
+651, 0x3c3186b7
+652, 0xf7304619
+653, 0x7ac7be81
+654, 0xae6adcc4
+655, 0xca96bf8c
+656, 0x49711d50
+657, 0x74c51f0
+658, 0x275804c0
+659, 0x228098c5
+660, 0x73a31b94
+661, 0x7f01db79
+662, 0xb36209c8
+663, 0x6ccf8677
+664, 0x70dbcce0
+665, 0xa533d8cd
+666, 0xd0b0f097
+667, 0xd9a3b784
+668, 0x80a929fc
+669, 0x9708f29a
+670, 0x95e1e56f
+671, 0xd07a0b45
+672, 0x566acdb6
+673, 0x92663054
+674, 0x3667dc9a
+675, 0x80f850ff
+676, 0x549dd640
+677, 0xc3ff18ca
+678, 0x8c70d392
+679, 0xf5547e3b
+680, 0x8dbee1d7
+681, 0x51fe33b8
+682, 0xb1ea480b
+683, 0x6646f6d0
+684, 0x4a8e7de9
+685, 0xcb053e32
+686, 0x6311aee8
+687, 0xcc2a411b
+688, 0x5330e60b
+689, 0x4680e825
+690, 0x96bdd8a2
+691, 0x8cf4268a
+692, 0x8445c833
+693, 0xc237eef1
+694, 0x459670e8
+695, 0xedf26624
+696, 0x5713340f
+697, 0x5a3e87a3
+698, 0xa24a7c2d
+699, 0xfa9fdceb
+700, 0x746fd14e
+701, 0xc6aef3e5
+702, 0x3d957e9b
+703, 0xc1926f7a
+704, 0xee717768
+705, 0x101fe323
+706, 0xec0d63ab
+707, 0x8b8e6f42
+708, 0x8c3d2286
+709, 0xb573dd68
+710, 0x53b68ec0
+711, 0x696525cf
+712, 0xdab65d8e
+713, 0xd2c6ed42
+714, 0xa1fc10f6
+715, 0x1554666
+716, 0x6ed42947
+717, 0x87f7e62
+718, 0xaf34733b
+719, 0xc55baa8b
+720, 0xcbff66f
+721, 0x2516c228
+722, 0xec6980fb
+723, 0x4f53d66c
+724, 0x1be17a32
+725, 0xdcfb31df
+726, 0x4b17d04f
+727, 0x81e1f54b
+728, 0x749eae52
+729, 0x3811c4d5
+730, 0x5d11e6a1
+731, 0x535d5d6c
+732, 0xbb74cd20
+733, 0xd1b18b71
+734, 0xfbf7221a
+735, 0x817c4279
+736, 0xcef30b85
+737, 0x41dee06c
+738, 0x9d340a3a
+739, 0x691f0449
+740, 0x363a515d
+741, 0x73a1af6c
+742, 0x25718271
+743, 0xb4a52d50
+744, 0x1e392f40
+745, 0x3c811345
+746, 0xc9aa8565
+747, 0x357c24e0
+748, 0x19ad7230
+749, 0xed250e20
+750, 0x4acc4824
+751, 0x825d53a
+752, 0xcf2f515f
+753, 0xb7973ff4
+754, 0xb03ce53f
+755, 0x1afad500
+756, 0x39f64ee8
+757, 0x60bea483
+758, 0xedf16817
+759, 0x88beff73
+760, 0x4909868
+761, 0x879a96da
+762, 0x52d4ac6b
+763, 0x46fabe65
+764, 0x88fa5751
+765, 0x71df4521
+766, 0xfc6eb286
+767, 0xf83e78ad
+768, 0x885e5aca
+769, 0x77e63e4a
+770, 0x2bdf5c02
+771, 0x2528323c
+772, 0x5b5d1ce9
+773, 0xf795be8c
+774, 0x5e113b2b
+775, 0xa993c7aa
+776, 0xe5f8560a
+777, 0x77e1e8d
+778, 0x5e9db88a
+779, 0xdac4e96b
+780, 0x9126b945
+781, 0x15bf293a
+782, 0x1dc9a8f4
+783, 0x909b48b1
+784, 0xb50ce29e
+785, 0x21671c87
+786, 0xcda80dec
+787, 0xf5aff1a9
+788, 0xd70cdb2e
+789, 0xd293139a
+790, 0xcbf4f51d
+791, 0xb23c6d7a
+792, 0x1a06aa33
+793, 0x21880210
+794, 0x92679678
+795, 0x8d5bb26b
+796, 0x23304100
+797, 0x8f5d1df4
+798, 0x143b39ff
+799, 0x29e97d16
+800, 0xbfad952f
+801, 0x257ca1d8
+802, 0x32ad2f8f
+803, 0x84d320c3
+804, 0xcc4c59a
+805, 0xbb5ae046
+806, 0x3d5fcf1d
+807, 0xa0130b0
+808, 0xad86e9de
+809, 0x1e422521
+810, 0x6b56a617
+811, 0xbe64d9fc
+812, 0xfff31ed0
+813, 0xd1ad616e
+814, 0x13486a20
+815, 0x1754613b
+816, 0x52c7b9da
+817, 0xc05d75aa
+818, 0xd719cd98
+819, 0x61890574
+820, 0xc4711a8b
+821, 0x9afd5635
+822, 0x4dabed21
+823, 0x94f173
+824, 0xb8b6e708
+825, 0x1d590111
+826, 0x60315dfd
+827, 0x7fb8ae79
+828, 0xc69f4f2b
+829, 0xcaf1c898
+830, 0x861a0c8b
+831, 0x6ed14eaa
+832, 0xc77da58
+833, 0x8fd4f29a
+834, 0xa38187fb
+835, 0x6ed1ee88
+836, 0xf1a9f55a
+837, 0x74368cc8
+838, 0xf327e944
+839, 0x97a578af
+840, 0x8a5345e5
+841, 0x63ee0a30
+842, 0xa7e4919b
+843, 0x51e26930
+844, 0x38dbe017
+845, 0xedace3a9
+846, 0x9cda2ad4
+847, 0x96b1119
+848, 0xff56282a
+849, 0x71773edf
+850, 0xe41fb69c
+851, 0xe7bce539
+852, 0x221ffeed
+853, 0x35d3f67f
+854, 0x7e089168
+855, 0x6fd47823
+856, 0x43bfb28d
+857, 0x9ce49e62
+858, 0xde32120
+859, 0x6eacfe4e
+860, 0x116c6128
+861, 0x5f975284
+862, 0xc547361c
+863, 0xf48e8251
+864, 0x2ac8a3bd
+865, 0x9a0fce5b
+866, 0x1764e3d9
+867, 0xa31e6954
+868, 0xb9dca055
+869, 0x1cd35c79
+870, 0x1b502882
+871, 0xf973ab10
+872, 0x8b585146
+873, 0x841fd3f8
+874, 0x4999200f
+875, 0x7ad10c4b
+876, 0xcf1695bd
+877, 0x26c58bc3
+878, 0xdc1f8310
+879, 0x546e1e86
+880, 0x2e39fec8
+881, 0x8c65e2ed
+882, 0x6469bac
+883, 0xbc4af1ff
+884, 0xa1669010
+885, 0x41dabd80
+886, 0x5797e218
+887, 0x9bed24c1
+888, 0xa7552347
+889, 0x4e214099
+890, 0x34d4f986
+891, 0x316cc527
+892, 0xde30c21c
+893, 0x4f273c1e
+894, 0xc3dd9324
+895, 0xe61fda1c
+896, 0x1d0f8076
+897, 0x5570867e
+898, 0x289d6062
+899, 0x465b8b26
+900, 0xb72307de
+901, 0xe78c8647
+902, 0xfee9723e
+903, 0xa1534c9b
+904, 0x4d652645
+905, 0xe623b6c2
+906, 0x454cfc8
+907, 0xc5a7fcaf
+908, 0x1de804d9
+909, 0xa2501de7
+910, 0xe036c091
+911, 0xa4a55d1d
+912, 0x50409892
+913, 0x58fd2731
+914, 0xb6fd3618
+915, 0xa0180bd2
+916, 0xd9bb2fe8
+917, 0x7c8e7a2c
+918, 0xd90906fc
+919, 0xf8721260
+920, 0x451b372d
+921, 0xeeb1c70
+922, 0xc1a18778
+923, 0xd466244a
+924, 0x88e4b84a
+925, 0x4fc3af63
+926, 0xcf4387e4
+927, 0xb8872734
+928, 0x276eadef
+929, 0xd2c164a1
+930, 0xd3c812d9
+931, 0x5a94f176
+932, 0xfba6f632
+933, 0xf7aeba97
+934, 0x9207585f
+935, 0x70a41d67
+936, 0xa0b70910
+937, 0xd579fc6b
+938, 0xf06a8fca
+939, 0x471fd406
+940, 0xb15a0491
+941, 0x2f340f7a
+942, 0x3df02de3
+943, 0x6022f8d6
+944, 0xa15b11c2
+945, 0x45715dd6
+946, 0xf293d85e
+947, 0x7a2100d
+948, 0x7dff786e
+949, 0x52c6a183
+950, 0x5fbce2db
+951, 0xbc29ec65
+952, 0x3dd14b27
+953, 0x1bedecd1
+954, 0xbfcba31c
+955, 0xb911a26d
+956, 0x6b6de680
+957, 0x36e8769
+958, 0x908de4a0
+959, 0xe1abee1f
+960, 0x83acd7f8
+961, 0x5008c1eb
+962, 0xd8bc7a2b
+963, 0x6f639c56
+964, 0xe1f2634b
+965, 0x267222ec
+966, 0x48fa416c
+967, 0xfa01e3cb
+968, 0x2d28a700
+969, 0x58dcdc97
+970, 0x685ac2e7
+971, 0x9318840b
+972, 0x99247a55
+973, 0x8d749b83
+974, 0x403f8415
+975, 0x373eb9c6
+976, 0xb840b6a2
+977, 0x9bb7bfc4
+978, 0xd5800634
+979, 0x3ef4a02d
+980, 0x2ffa791f
+981, 0x8a671150
+982, 0x40fdfc5e
+983, 0xfa4bd35e
+984, 0xf4ca1642
+985, 0x17fb231a
+986, 0x42a3e57c
+987, 0x58cf119d
+988, 0x32f19c67
+989, 0xf3e2e153
+990, 0x66fce6fb
+991, 0x9d61059b
+992, 0x1628eafb
+993, 0x9a6cf683
+994, 0x5ff5df3a
+995, 0x206fb3c9
+996, 0x1914913c
+997, 0x58c002ad
+998, 0xd099145f
+999, 0x155aab4b
diff --git a/numpy/random/tests/data/pcg64-testset-1.csv b/numpy/random/tests/data/pcg64-testset-1.csv
new file mode 100644
index 000000000..da6d77d40
--- /dev/null
+++ b/numpy/random/tests/data/pcg64-testset-1.csv
@@ -0,0 +1,1001 @@
+seed, 0xdeadbeaf
+0, 0xb174ddf3fe597da6
+1, 0xfc217240c1e61e6f
+2, 0x20279da26fec9cbf
+3, 0xa5f4ee34651f4e1e
+4, 0xb254d7901c68b9db
+5, 0x6bf2a64e4052c36f
+6, 0xbec4c7418c0f61b6
+7, 0xb03e595a4ef2b2bd
+8, 0xc8e051957ccb74c6
+9, 0xf5082df7473c6f62
+10, 0xb72aa3dc22752a38
+11, 0x7a941561514bd680
+12, 0x90a95f42834f347b
+13, 0x88e17b9d59def797
+14, 0x18f19c86bfe60368
+15, 0x667f89277be8d1d8
+16, 0x63305475e7aeff27
+17, 0xd7e4d5c09fb0fb4c
+18, 0x7dd6deab03a8c26a
+19, 0x42bbcb746e2d4b26
+20, 0xe91f2ac4fa90689c
+21, 0x2f83458da0af3125
+22, 0x49a43537a00fae89
+23, 0xef02111d1ebc16eb
+24, 0x32b3b3019875f3e7
+25, 0x89eb15c48cd02774
+26, 0xa9f1b37865752731
+27, 0xe0eff9dadc47fb3
+28, 0xae859b1c54cc90c2
+29, 0x7b7c5e04d5015dec
+30, 0x38faeff5ce3266ff
+31, 0xd2ddd0d19fbc24ee
+32, 0xe0d4f692829a31a9
+33, 0x30a6aa3f408e71c2
+34, 0x298362be21de6d44
+35, 0xb7efab759e691149
+36, 0x2ae1f84bba093d4c
+37, 0xf6ab55f78f8b9258
+38, 0x2275d0af583cec95
+39, 0x18cfe066b183ac3c
+40, 0xcc0a546d54064cf5
+41, 0x5de027ea3c25c225
+42, 0xdaf31ef489fe71e1
+43, 0xa7a2b1a72a4360e7
+44, 0x678a55d7a0506791
+45, 0x36facd8799ad2b78
+46, 0x32fec94506dca70e
+47, 0x34e890d8539871f8
+48, 0xec48b5362b0d7818
+49, 0xe2e58921cf8228d3
+50, 0xd163588ec22730a4
+51, 0x17e2322b6be47d25
+52, 0xe1544989a0c6d24f
+53, 0xa3a10fb279cdc347
+54, 0xad4ee318a5853900
+55, 0xc96a185feef4a85d
+56, 0x82ec5b3aed6636fb
+57, 0x2aac2ef8f25426d7
+58, 0xa81e3114165e0d08
+59, 0xc1d8128f83969da5
+60, 0x157505508eaf50f1
+61, 0x77c175067c9c199c
+62, 0x973052089bd7af0
+63, 0x3cd70041e32c1921
+64, 0x7783719f13a254a0
+65, 0x2216485ff502d9ff
+66, 0x7dae695d2c7f3b79
+67, 0x809ce710156fea36
+68, 0xb90ac31262460e4e
+69, 0xc1afe8019306e7d7
+70, 0x6c57638edba4ca0a
+71, 0xbe6133f6ab1e9aeb
+72, 0x8f5699ff0bcf341d
+73, 0x69d0218df036bcbc
+74, 0xf0976fd79735d47d
+75, 0x82b36a795e5cc74b
+76, 0x263c30766b985686
+77, 0xf7426f94511d5ba0
+78, 0x8b04f9573050ed9e
+79, 0x7280d4ec202e8359
+80, 0xa8235fbd1324f172
+81, 0x6dbd5d500a809a8c
+82, 0x26c53c69292bca1d
+83, 0xe348f657b20305ec
+84, 0x562f0e2fbb375421
+85, 0xdf2be07bebfbe447
+86, 0x4275044640683760
+87, 0xad5d68bfe4ab4858
+88, 0x3c0e57df5b3306f0
+89, 0xc9d87622ac847565
+90, 0x83d04fd9e102c311
+91, 0x71996b9c65aaf5c0
+92, 0xe3df32742d6fc446
+93, 0x58d3a6573a39d0cb
+94, 0x74dfa090e96d289d
+95, 0x7856f45e5416c1ea
+96, 0x80a18e88b3e4dff8
+97, 0x60565bbcb04f56ac
+98, 0x9f4cf5ec45fae3a6
+99, 0x885d2909fe34e3f0
+100, 0x7a1db9118f60dee0
+101, 0xc4c17dc810746c7e
+102, 0x8b954b14effe83b1
+103, 0x4f89fb0940999c86
+104, 0xc62e634bceca1c97
+105, 0x7e06e87dffd1619f
+106, 0xd1ccbce841371671
+107, 0xe7f99698c66df1b3
+108, 0x5302c2f0e4e1f4e0
+109, 0xa57d11d3d7ee652e
+110, 0x8abe0ed0e5508407
+111, 0x6780588af9f6c2ff
+112, 0x8603a9fc73b6a4cd
+113, 0x169c13a0b7a166b9
+114, 0x868969fb53578598
+115, 0x6089e0eacbe69039
+116, 0xf82482d424397dc2
+117, 0x11475d20896fc890
+118, 0x7983933df29e2aa0
+119, 0x4889c4780cd8e9cc
+120, 0x53ebb258f3ea266b
+121, 0x121896059b256fd1
+122, 0x2f9934516b2f8090
+123, 0xbabb9fa1d1efa60c
+124, 0xfb0b1370ea044797
+125, 0x782ab293b597bc8e
+126, 0x297fc0b3977271f5
+127, 0xa573e4d0674d02fc
+128, 0xc7e8ddb6efe8a2db
+129, 0xaae8a024e62f6e32
+130, 0x3217a47698c9e439
+131, 0xd7015db847a3de0b
+132, 0xbc0b4368776e10a7
+133, 0x69d9ef0178679bfb
+134, 0x28fd8f0936b66fab
+135, 0x45b1c4d4aa9b5aca
+136, 0x28feade39cd3ac00
+137, 0xa7e6515c534520f1
+138, 0x735703b5f4bfd54e
+139, 0x798271ae0c91b8d8
+140, 0xf858458f9efa8d2
+141, 0x6a41f5845422a9e
+142, 0x7fb0bba5f097aab0
+143, 0xbfaea58fe090e745
+144, 0x84770504bfb15b35
+145, 0x67ae11aa368049b8
+146, 0x846c5e493ee15e4a
+147, 0xbbcf3baf029f056c
+148, 0xd30c23bde142a356
+149, 0x32cd403edb746a8d
+150, 0x40161ab00c636730
+151, 0x3a882c3c60d3e19a
+152, 0xca8faab24d826529
+153, 0x241a687288551d04
+154, 0xbbc607fb9b48ac00
+155, 0xa844329d0c2d475a
+156, 0x8fa4aa1d7296b9e4
+157, 0x82c7dc1f588ce2fc
+158, 0xcbdaa663041e078c
+159, 0xec108d219b2b147a
+160, 0xcab01864270b334
+161, 0x6d3d08545041621b
+162, 0x2aae054b8e5648f
+163, 0x1bf5a72fa70e7eab
+164, 0x2dddb2050af45a3a
+165, 0x2b910b7078021a75
+166, 0xf7160201ede45f4e
+167, 0xfaf75ae996f079bb
+168, 0x407984a9451e659c
+169, 0xbdf9c0a9ea078ac0
+170, 0x1e7717b8345acbb6
+171, 0x25cc2df4c0c8dc4a
+172, 0xfda1715b573850db
+173, 0x50e5cedad99e2651
+174, 0x9a67673ed73cfc0
+175, 0x802ec4fc9e946805
+176, 0x677cd320e641999f
+177, 0xbfeb1b6053fe4f78
+178, 0x220cfc90bd31541
+179, 0xe4fdfae10ae6c86f
+180, 0x76c568fd869af80d
+181, 0xd17dc57109200bb1
+182, 0xeb96ba01c95382be
+183, 0x6a9c7ebea5b5f7ac
+184, 0xc1680450532fb8cd
+185, 0x26b0829f68888094
+186, 0x98335aa1612d7c70
+187, 0xad8662125bf32ae3
+188, 0x15f18a9025ae26e8
+189, 0x5d065dba0d17c9fc
+190, 0xf68e1d59f10ff109
+191, 0xcfbd97901a79f8b0
+192, 0x3e72a9fd1d95f143
+193, 0xe7ee82c1bb740dfd
+194, 0x3a0f4ae5db22527b
+195, 0xf4d025080ed4ea92
+196, 0x6924a99549b4657
+197, 0xcb83b51552208e2f
+198, 0x9f306634214b44e9
+199, 0x4fb3307b0e1a7535
+200, 0x73d202d4225c5394
+201, 0xd5a2fa42f8cc8c5c
+202, 0x7b3b3e3f7b948d3c
+203, 0xa2dbc4d30d8c148e
+204, 0xd1bfc1f05a8f2c5d
+205, 0x2b00a4efa2f19262
+206, 0x9d4a05bb18647f48
+207, 0xff21fbaf0b46d13f
+208, 0x126f9c5f2132af20
+209, 0xd4b7629b0d9a6b89
+210, 0x2d61949fb3126ecc
+211, 0x30d61648763db1ce
+212, 0x9c5234d15120bf17
+213, 0x2eb0eccb6cc14c8a
+214, 0xcf18eff5ca2af8a4
+215, 0xab5fe599ea68c377
+216, 0xe47a0bb8436af89
+217, 0xd3728a566187c400
+218, 0xb8b54592b62f633e
+219, 0xe02b958f9c13a180
+220, 0x9e5f5cc85283f24a
+221, 0xbd1ab869878744a
+222, 0xb93fd6297a29c8dc
+223, 0xf22f06ee61dc2413
+224, 0xc93fe440766cbd8e
+225, 0x7459d9b19375a51c
+226, 0xd4ec87c57baa4127
+227, 0x1514d0226dc0409e
+228, 0xc6b0d7e1bd56b190
+229, 0xc0c61c73c9dbffee
+230, 0x2f1154afb48a93e2
+231, 0xd2ca05901bae0117
+232, 0x6263f647273694a0
+233, 0x94a98bf80488205b
+234, 0xcb0d63747735bead
+235, 0x9cbd4e1659932c5b
+236, 0x1807e01931b5ade0
+237, 0x1d9f7721d3067854
+238, 0xb25dbde4ec77e547
+239, 0x4b186592a39adcd6
+240, 0xe8ad5514de72a98f
+241, 0x2deac1cb096a09b4
+242, 0x6952f4b82a2c87
+243, 0xaa1590223ed83ffe
+244, 0x9baf13d08f572e12
+245, 0x83ec1bca1e724d88
+246, 0x5c61bf2222b4907
+247, 0xd950ff64ad7b956e
+248, 0x36bf5e992bf1f211
+249, 0x75ad67249d7a6c35
+250, 0xeb12dcef5c2bfe7d
+251, 0xc508da925157e39d
+252, 0x91cbd7491ea7f70e
+253, 0xf10c018ec0b0e55
+254, 0xeeffb21fef1e87f1
+255, 0xe31692b834d067dd
+256, 0xd69bbafdeb5c0d15
+257, 0x41358dadb9260eb1
+258, 0x5fa3c67d353cd6b2
+259, 0xdbb743cac20b2eda
+260, 0xe7877ba98b2bfe4
+261, 0xf14d679436fd2dcf
+262, 0xa313e39059d62afe
+263, 0x7eaa134c761a6183
+264, 0x7719af9ad1fecaec
+265, 0x533f921a4702d433
+266, 0xe072f9665ec3a3c8
+267, 0xba89560ab4ba08fa
+268, 0xe94f0aa266e56d53
+269, 0x774b84bcb152afc
+270, 0x787c9517e589748d
+271, 0x3831a5303adfd362
+272, 0x19cb20184a4264f8
+273, 0x9bc5e99e1773700e
+274, 0xed323bf38642f651
+275, 0x860868c0eba789f2
+276, 0x8c1602ffd9a5621a
+277, 0xe298d8fc74e146ce
+278, 0x3181a2083c76037f
+279, 0x27942fd6842079c0
+280, 0x38fe8c0406516df
+281, 0xd211a4a42857bec3
+282, 0x56002508b351879d
+283, 0x2472ed93614c7e99
+284, 0xbcafdaadc0f77b7c
+285, 0x86becbd3e5303107
+286, 0x930251d84de72320
+287, 0xea79aa2964954052
+288, 0x6dbc5e63b50b1724
+289, 0xb098535ed4bc7372
+290, 0x6490d6d8541fb656
+291, 0xc738f6ccb4b7076b
+292, 0xd69ee4fd6ce63026
+293, 0xfa98e9d78a628338
+294, 0x9c30b63a70d607b6
+295, 0x8d544b5d224a25d9
+296, 0xa051f7fe38445228
+297, 0xf6931861338a00f5
+298, 0xecd71cd64b0b5dcd
+299, 0xdbc818e7126193b
+300, 0x3aaaa032aad8199a
+301, 0x6fd68a3818e0c439
+302, 0xc82a651ba9ede8c9
+303, 0xe6d958e267017187
+304, 0x73a9eab64de651ae
+305, 0x5a6757f7f222bb3c
+306, 0xe62e7cca6bd17a32
+307, 0xc4f6c31f528dd387
+308, 0xdecd8b663c995773
+309, 0x69a21dedcbfef9c7
+310, 0xb33f8ac00f17b6b2
+311, 0xe32b3c962d613ba3
+312, 0xa9c317d026600d41
+313, 0x901d971c49671213
+314, 0x46c3f3d35db8808b
+315, 0x1336297232af9791
+316, 0xed88d9242e11edb3
+317, 0xc70c48843f54af0
+318, 0x611062a0461deedf
+319, 0x7e3183514f127f20
+320, 0x7b549d10bace1c47
+321, 0x6db523d19d0a7af3
+322, 0xf6e677e5222a21a4
+323, 0x28e5188ba7055c32
+324, 0xbe7b41d2ce539c4f
+325, 0x5c085a18c3b7bbe0
+326, 0x209cf345b3c3b06c
+327, 0x79ca5407dd486857
+328, 0x8e07ac4c65338ccd
+329, 0x56dd5372249cadad
+330, 0x27e0b07863fa27ff
+331, 0x78dec95d299a8699
+332, 0xbd5d71253b73d456
+333, 0xbf83b6cedd205e9
+334, 0xee2352ee69aa68e
+335, 0x4b14f253d684cfbc
+336, 0x12ffa5d5f8a34bec
+337, 0x2e38346fbc793f67
+338, 0x2ab5862872b4850b
+339, 0xcbc8aec1e2bb6760
+340, 0xd79ef783845cc329
+341, 0xdbdcde91e1685704
+342, 0x29880643aa1095e4
+343, 0xcd5ccc1fe9a616af
+344, 0xc7b6cdc4a43c132c
+345, 0x7b08597fdec7fc9c
+346, 0xa01ab3827e120a16
+347, 0x89ce37de99ca7748
+348, 0xb4644823ea6b90d5
+349, 0xdbe189861c409209
+350, 0xbfeb614759981b60
+351, 0x48c2c3a6d2419755
+352, 0x1aa1df0e99b3417e
+353, 0xb9f061bf98c0da28
+354, 0x8bce2755a0b5b8ae
+355, 0xc9bb2ff33d60b3e7
+356, 0x6abcbb1ea0d3a575
+357, 0x983a3c16a0e5d6f8
+358, 0xa122e616797ccdbe
+359, 0x751dfe60252a01d0
+360, 0x8d1bcbbde84f6a11
+361, 0xb6bc4f2942ba0e57
+362, 0xb298977a4bb20e12
+363, 0xcf658188dd931722
+364, 0x39735757b19c90a3
+365, 0xc2fcf1df99f1b7c4
+366, 0xd42c50f6a912aaea
+367, 0x95d0cb8a953965c4
+368, 0x75c7d03289269f25
+369, 0xd8d96184031fb36b
+370, 0xb3b34b5ba8bac75
+371, 0xcfbf16d241e46f8c
+372, 0xec465e59019b6f6f
+373, 0x4051ce0bc2562a63
+374, 0x859f05ce7b75da05
+375, 0xf2661ef2e3c733ef
+376, 0x8067f432dd5af0c4
+377, 0x6e8542a346911713
+378, 0xfcda2ac6aa45ca20
+379, 0x571f23fdacb25fe2
+380, 0x2546f5badf7adb8b
+381, 0x929ebe6fbd330e2b
+382, 0x9d41d6ded9facbeb
+383, 0x4cf9d9da6c125106
+384, 0x495d5708443faa36
+385, 0xb0023a41a6057e59
+386, 0x37fa1cd9ce66b20a
+387, 0x96a376fca4aff5a8
+388, 0xc22469c4a3e1ea85
+389, 0x5ab79b721966249b
+390, 0x2124be452f7d4ca4
+391, 0xe71bb882b954ca11
+392, 0x322bdcaf9c7b0efa
+393, 0x4c99c8753878439f
+394, 0x3ffd6caec9f9ac49
+395, 0xfba842dd40a3c72e
+396, 0xfd93517d31681d77
+397, 0x44c139a74249a128
+398, 0x828a145610684c8
+399, 0xb53696f802522b6
+400, 0xa2da2199474d079a
+401, 0x739e508fbbdeb714
+402, 0xe75c4734a7c95f94
+403, 0x5c22c226f2bd8487
+404, 0x7108fa6b99b0d72e
+405, 0x3c60b40f6e4bebde
+406, 0x395150555d56dd18
+407, 0x13246a6e4d795fe3
+408, 0x27dca990fb678027
+409, 0xc5a92c32724a7373
+410, 0x30fed89f4171a817
+411, 0xf7f7810edea2e7eb
+412, 0x46e930eef5351212
+413, 0xe1331cd8a678dc66
+414, 0xd4cc0a5f96a72457
+415, 0x2559f8d286b1da16
+416, 0x73831b2f6e4a4ba
+417, 0xd929ccf267504761
+418, 0x8a7a1b357f8bbc38
+419, 0xd5e0d3e200d0d633
+420, 0xc2cc05cc3ac5abb
+421, 0x75b8f78a06ca465b
+422, 0xeaf1d6aa9c0baef3
+423, 0xa6c9bc3dbe45e62e
+424, 0xb1496074b4c338d7
+425, 0xc18ebb892108cec
+426, 0xf6cbbf4cd0f8f9ba
+427, 0xd73759407ecbdcf6
+428, 0x54dc0805c85a3b0c
+429, 0x4ba3936d6be048f3
+430, 0xa3fbea19803cf35
+431, 0x78b1d3a837d4bed
+432, 0x6ed09ac2c177453b
+433, 0x16134c4e8b30f6ba
+434, 0x94718ce4868f01a3
+435, 0x612fa336da82e66d
+436, 0x5d8833c9483b235d
+437, 0xf5c72d4883bed9a2
+438, 0x2a6e27d1ed337134
+439, 0xfba250d6b9cc0d2b
+440, 0x432f8734b61e4366
+441, 0x45e8becd5ccb4f32
+442, 0xffc7d68cb343170a
+443, 0x247cb9a6b29b1a35
+444, 0x89876df3681dc65
+445, 0xd1e646c49aac769b
+446, 0x4c3cd721635602d0
+447, 0x5139344709c749fc
+448, 0xc5130d981e1a6b14
+449, 0xff269bea082608cb
+450, 0xf45a5d57a6d4c6a6
+451, 0xc4c9f3e5398db827
+452, 0x2b3a0eacd42665b4
+453, 0x94d847d848a8e65d
+454, 0x1a8aff186e1d75d2
+455, 0x6ad986366c54a242
+456, 0xbd832c0607523e7e
+457, 0x973064c20c31842d
+458, 0x34d0513e6d602f80
+459, 0x91b3c812f83392ed
+460, 0x4c49ba38b6a4cf90
+461, 0x82e3370e1c5ad5d4
+462, 0xa29a01fa53250a13
+463, 0xbe8ed1e615a1ee6a
+464, 0x17fb15941a9fe6b4
+465, 0x84aea1c0138fb970
+466, 0xab065efb4558003d
+467, 0x3345b340257a2551
+468, 0xfd2ebda1048c0dcd
+469, 0x2aa72fce0cb23982
+470, 0x9952f9363830ff6d
+471, 0xdb240e279cb7f901
+472, 0xb4a1e7b54206aca4
+473, 0xe13bdbb980623f25
+474, 0xd989f009368f8a9a
+475, 0x7084b7695149660d
+476, 0x55b92a3f139c7f1
+477, 0xdb43c75c633debd0
+478, 0x94e362574c70b9a8
+479, 0x218a1a06d9223f9b
+480, 0x82f3c3808f86bb95
+481, 0x63e9de6cee4b77b2
+482, 0x3bc5effa36bb166
+483, 0x8369cbe5fa0ecab
+484, 0x2a5808b4d7bc8572
+485, 0x6856e29700de99f5
+486, 0x107e86fcfd4a48d9
+487, 0x15c9ee6528c1c223
+488, 0xbf7318d4206c5e75
+489, 0x15d7a6aa9343c9e8
+490, 0x93419fe0ee3bd5df
+491, 0x916c7f75ededdd53
+492, 0xe89d6230690f74f1
+493, 0xf92f96834e0eb27
+494, 0xed5adc06c305adc9
+495, 0xf656fe40e7ecb4d7
+496, 0x32a2d3eda46114b6
+497, 0xb3f17867d23c75e2
+498, 0x2a2cc838c4d89c33
+499, 0x413df7052f8866e7
+500, 0x373bd93e91bbed18
+501, 0x78c8e5aa1e1e2dda
+502, 0x6bd362f6be6d572b
+503, 0xba1926efd387aeb5
+504, 0x3b826b77ae3e53fd
+505, 0x383cf5a66fb6723c
+506, 0xf5a4e1dded64d931
+507, 0x76d9843a304729d3
+508, 0x205b8753b6d309f0
+509, 0xd2a68ef67d8e7758
+510, 0x60d517f325411c0c
+511, 0x37a3bb4950cf08d5
+512, 0xea3d4f95542ffe2d
+513, 0xa88708db07fb1d34
+514, 0xd96555e1194f7ee0
+515, 0xdd046e642b59fa51
+516, 0x18ff34e73582d46b
+517, 0x7ed73af03535c5fe
+518, 0x8ffd64801d2c5187
+519, 0x7134902903c9cfe2
+520, 0x74fa0b238ad1e1ec
+521, 0xa220ff0032395fd5
+522, 0x4ed0a7a2d9c3a064
+523, 0xb02cb878b4c9a04d
+524, 0x8437cebea5ae2bec
+525, 0xabcc162a0027aefa
+526, 0xc8e86ab8f5c09011
+527, 0xc28dfaf764ec07d4
+528, 0xb19127d64ae5db18
+529, 0x857cb1b00ac7fbc7
+530, 0x173a441c4b494aad
+531, 0x255af1a4d50952c3
+532, 0x87ff01c7d0139add
+533, 0x489b15e4c97cfcde
+534, 0xd4abbccecfb67239
+535, 0xa1a2912ad34ac4fb
+536, 0x94b7f12e10bf720
+537, 0xdb8840c295333634
+538, 0x5a29aab5b359f2c0
+539, 0x630352d282b695bd
+540, 0x399f00854d3fbdf3
+541, 0x19e917e0eb8bf070
+542, 0xa464b4dc93d1fe7d
+543, 0xf152d3cdecbd7647
+544, 0x517907b570a6b082
+545, 0xfeb06f4bd978e7bc
+546, 0xa22859ad14c0f183
+547, 0x33c11e90be9721e3
+548, 0x8394f642b5a40d7d
+549, 0x9525633e7e60ab73
+550, 0xf97401c9b4b96001
+551, 0x3d78ce1ecf900029
+552, 0xa85791d9754a2765
+553, 0x16e77aadd9a30946
+554, 0xc91d4defe72f39f2
+555, 0x2fb67bd91edc4b51
+556, 0x95d635e95b468fa7
+557, 0x28b81869d1739e29
+558, 0x5b098fa22cb1747f
+559, 0x6544b8704bd2400a
+560, 0x91a64f9ec6e93245
+561, 0x2b46ba92268db263
+562, 0xbb52d7758efd5416
+563, 0x7032adc08e6d39da
+564, 0xe9d3bbefdb61feb6
+565, 0x2d603389c757996b
+566, 0x5871ed32ce17d042
+567, 0x31d622a6b8438f70
+568, 0xc71af17db6bf7aed
+569, 0xe419e3c6fbe86530
+570, 0x648471d670f18dcd
+571, 0xd13f9e25078599ed
+572, 0xdaf86e56826d07a3
+573, 0x3c9374e4420a8580
+574, 0xcd75b12ad6d8d9fe
+575, 0x2d4530f6e2b93ca3
+576, 0x303bb663ad4ca963
+577, 0xf8caecede4436b61
+578, 0x315a8124669a907f
+579, 0x1c18d130a4b93836
+580, 0x9e0b83663631562a
+581, 0x400059c1ce071c7f
+582, 0xb27f7f67e7cbd970
+583, 0x6b446e8c4866f3d0
+584, 0x4ab1755d2734121c
+585, 0xb9fc8e017d89edf2
+586, 0x3a9aa7f50355c0c9
+587, 0x899fece06a169b2e
+588, 0x19d7d7088db0b27d
+589, 0xe4f8862ca8f6b87e
+590, 0xceaf0d6ab4ba624d
+591, 0x318965c56f79886d
+592, 0xb1840d9bb60b720e
+593, 0x387427e7549150ca
+594, 0x9be3edb621a5d2ef
+595, 0x9758993cca6a481
+596, 0x3733c5cd48a1590c
+597, 0x9bbe26951c666fb1
+598, 0x74c7e89fefb4ba59
+599, 0x6aa490a23907053f
+600, 0xa62febef1e8d7300
+601, 0xdbfb07bbba2fd4cd
+602, 0x11ee9e4bbd4f358
+603, 0x6b40912657c7f02f
+604, 0x8d56c1a9216714bb
+605, 0x7fcd86985949c2f9
+606, 0x706bb172d5677f2c
+607, 0xfb657efea1331957
+608, 0x6e3032f72a3fe367
+609, 0x509fb8c5b618a18e
+610, 0x3599e957259222e7
+611, 0xaafc78bea53c9102
+612, 0x404addaf7ac55279
+613, 0x97db28b3b0a2dddc
+614, 0xd3f5b151a9f5aefb
+615, 0x1a6534a9be80a19a
+616, 0x78f989eb80e055b7
+617, 0xe0200fe015112dce
+618, 0xfbe67decef6204dd
+619, 0x662fef92c8e00970
+620, 0x9a7838962250f5d7
+621, 0xac0eabb1621567b3
+622, 0x1874cf715cdc5daa
+623, 0xd3281a25a82ceecc
+624, 0xd8ac0e497b11156c
+625, 0x3c8bf98f8210af89
+626, 0x971973ff9d428a3f
+627, 0x1af47276bc157e63
+628, 0x671cd5e661ed0a05
+629, 0x71b8ffba9b976a0
+630, 0x8763f1fa85c5f5d5
+631, 0x61f3c56f3441aad4
+632, 0x86482f5e90362e3c
+633, 0x8e9d9aceba401c48
+634, 0x51d916579d19d42b
+635, 0x67bdfa28310ad3c7
+636, 0xb9ab819d6a00add8
+637, 0xaa12cb0ed2d507bf
+638, 0xc636190dfc7f6d43
+639, 0xf3f1e6c104c5e782
+640, 0xaed0be2f07ad4313
+641, 0x1d782d74661278bf
+642, 0x58e6501bc7e61fa2
+643, 0x8ca4ad0e02d7fb42
+644, 0x8afc9e9fe83d4b78
+645, 0x72cb69cf4abf0b1d
+646, 0x7601a7b3500d474d
+647, 0x97fee7da53b533b0
+648, 0xd6ab646f53c0e19a
+649, 0x6480f60992f2fcc0
+650, 0x64ec7590c60a4c00
+651, 0x3ccab37f11acbe91
+652, 0x9ddd546f201299fd
+653, 0x9a0dc59d0b545d96
+654, 0x8c5f366bd21664f5
+655, 0xc0af97b445bfc5ee
+656, 0x29762536dc00c3fc
+657, 0xfc30927fd8f1c257
+658, 0xac9aadfced7d59fb
+659, 0x8d039f87658a29cd
+660, 0x13a3d73580eacf6f
+661, 0x80b80e0adcc11ac5
+662, 0x1e53c21e639f9d08
+663, 0x8a73352dc442bca7
+664, 0xec7cb2fe0e6b0100
+665, 0xfa5e63f403ac3f33
+666, 0x493d9a0018185f8c
+667, 0x1b1d1f41c6cf5cb4
+668, 0x95b4caca3e2500a7
+669, 0x4e759e6f89f62f91
+670, 0xd0a76a3198d7c05f
+671, 0x86eee6259cab63b5
+672, 0x1daab21067011b59
+673, 0xd02d9236ebc91b38
+674, 0x693e17ac2b70e1b7
+675, 0xceb5899aa14d0f86
+676, 0x59ffc317faf17ab2
+677, 0xce94f02892a0fa30
+678, 0xf7c9d6f9e753737c
+679, 0x87258cf7ff6a29b5
+680, 0xb39fc8ea8aa52a0e
+681, 0xadd4b4e73af1103f
+682, 0x511f423730b25a4e
+683, 0x7f673288e53502b2
+684, 0x9aa499e3b6295919
+685, 0x83841ad95e6a7a6
+686, 0x6e549a2457a850c
+687, 0x4763220b923113c3
+688, 0x99737bb550aa5049
+689, 0x89eb31b3f707c4
+690, 0xdad5331dda8a58d3
+691, 0x5f1681518d5a21b8
+692, 0x258a0b9b24110918
+693, 0x8854bb025009fa21
+694, 0x7ac331fd885642af
+695, 0xe520f0e9bedf0bf6
+696, 0xc9419e8801aa2afb
+697, 0x356fdc0fc3702b37
+698, 0x6d6a25f39fbc9524
+699, 0x930f65c4dbf8ae94
+700, 0xa73d7bbf8c19c4b3
+701, 0xe473f700513139fa
+702, 0xfef8f0e84c521bae
+703, 0x88525351995576a7
+704, 0xa156b646ab95f272
+705, 0x1a46ff3b9ae7e723
+706, 0xf6d82b8bd9f2a80
+707, 0x837b8127d8f39ebf
+708, 0x1f8e120ea11fc9bb
+709, 0xbd0918421430f8c9
+710, 0x4ef121a688d130c7
+711, 0x3fef66f1cf180b77
+712, 0xa92070bdc6a0100
+713, 0x2444dcbb4853c174
+714, 0xe46b7d6234504df8
+715, 0xe5ac8fd968a5d1fd
+716, 0x988828d885f04f30
+717, 0x9730c37b69f3d963
+718, 0xdb9a0d16bf0a2aab
+719, 0xe75d00b3681941b9
+720, 0x518421d62db82da0
+721, 0x4da04c94268c1dae
+722, 0xdcf2635a55b7da9e
+723, 0xb679d8206c55a04c
+724, 0x1fbf58865fec1e83
+725, 0x53ca7cc07c0e5785
+726, 0xd18eee3f5b57c813
+727, 0x9fc8d328e41d1299
+728, 0xb2231521e026e15
+729, 0x1a7e2a8df269acde
+730, 0xe5f547b160b0a6de
+731, 0xab01e7130bd70c14
+732, 0x82a051680f661a75
+733, 0x479da77dd9686ca2
+734, 0x1417cc197738b272
+735, 0xb65b5ced585a8186
+736, 0x40b5a74813e7a05b
+737, 0x55481e0f404fc2c5
+738, 0xef1ca09a2640c44a
+739, 0xa0f1d37ee2db47cf
+740, 0xcabb0c8e551f0587
+741, 0x84227dd83ad941ef
+742, 0x7b47691b6e8327d
+743, 0x4fe615394f53d6d2
+744, 0x60bca7e568f65c80
+745, 0x8676b74f2d5600f4
+746, 0x70f256171f1eb9b1
+747, 0x6b1d25099f80e1fd
+748, 0xd8e77e8a67ff3338
+749, 0x3ec375feb7727aca
+750, 0x26b9ad4afd4be26b
+751, 0x849e6f9bc5ec636
+752, 0xa34e3fad187c089f
+753, 0xe369ba87f04ecc37
+754, 0x83c6e1c3985cab4e
+755, 0x6ffc032379a15336
+756, 0x654645504b159afc
+757, 0xabc97562087edfad
+758, 0x4633765a9f068fe5
+759, 0xa226c586394d348b
+760, 0x7034d9fd40133a22
+761, 0x89e1d142a1a20097
+762, 0x7a3e1387a5ecdf70
+763, 0xf0ae75084f0a1bc4
+764, 0xdcf97778ae782977
+765, 0x87996a44dbac128d
+766, 0x94b102ac15479072
+767, 0x9d670a01e10c48a0
+768, 0x8f977a03176d0cb1
+769, 0x8522bdbed25653c
+770, 0x8f2b64a9cd6b5483
+771, 0x86b2beaa71c92fbc
+772, 0x40f896707639f820
+773, 0x40e7df1535fc03ad
+774, 0x1d34c491e13debde
+775, 0x862d5ad393292476
+776, 0xd33ee4efdd4b14d9
+777, 0x63ce5c7643b85ecd
+778, 0xd28a7fe0700fd15
+779, 0x8c3536390f9b7b55
+780, 0xfaf87a9036dd0265
+781, 0x187e261c23b454a5
+782, 0x95362150f08e5f86
+783, 0x6588c21939d9521d
+784, 0xc7cee242280b7526
+785, 0xc1b8f83462038485
+786, 0x68c2f342724de8d6
+787, 0x35c283dbca3c62fd
+788, 0x556c441e9fdc5cee
+789, 0x898ba42c4ad3f5ba
+790, 0xc654a072fe9ce540
+791, 0xcc2da7cabdc658d4
+792, 0x518b6badf9c1ba7
+793, 0xd43b259427de48cd
+794, 0xfe7e74d4415bea8a
+795, 0xdee4cacb454d92c
+796, 0xdfb09dde6d6c3000
+797, 0x5c0d4ce2c7a8d426
+798, 0x29ccf2d288f4de4a
+799, 0x4106e7f40d2597ad
+800, 0x3bc376950bccf69
+801, 0x65b74e149d1066e3
+802, 0x751d008e4f823e5e
+803, 0x4a3b9a34d8ece205
+804, 0x372e79ed6d9461fc
+805, 0x78e08cab6244f8d2
+806, 0x7d273315b6d9250b
+807, 0x26c401cb05f556b2
+808, 0x3324d95fbc93408d
+809, 0x14fb55fb83ab0a8a
+810, 0x7ea7efcddd0a747f
+811, 0x150a110bd5cb1b57
+812, 0x1122b31f5d20ad23
+813, 0xbd996a43507da1
+814, 0x6d11fad057e5a75a
+815, 0x22a4d3223d77684b
+816, 0x349973b5dda3d3e8
+817, 0xe4dab5aec267e32d
+818, 0x371cbd61bbb7858c
+819, 0x7e49182abfc0fc68
+820, 0x937722b126a7d173
+821, 0x29604490ccbe6611
+822, 0x6c8b230bdcc8dfaa
+823, 0xb1c267c94d4550ee
+824, 0x80d1fa6e33cde91f
+825, 0xe205a132f35af0a7
+826, 0xe4e8e50899fea5c8
+827, 0x3a6517d09206dfef
+828, 0xeff4e4f8efd0a4ba
+829, 0xd8df88c992b3df74
+830, 0x5b0df3c40071c0ac
+831, 0xd44a062781f833f0
+832, 0xef35653edcb68251
+833, 0x21f879df2bd3cfe0
+834, 0xdb5e837565891932
+835, 0x6da15316efae41e7
+836, 0xd33cdc0d05f8dd6d
+837, 0x3c6588502a24be1c
+838, 0x3d25da26bee94818
+839, 0x79979979960d383d
+840, 0x8a20663424f816ec
+841, 0x74c587d5824ee15
+842, 0x145f90c6b342c489
+843, 0xe2c2d15b8de95387
+844, 0xd9deaecc24e84ede
+845, 0xce52add2f5c3ea3
+846, 0xd1da2db8cca0014d
+847, 0xcbeed544f8791232
+848, 0xb55b421de003edf0
+849, 0xde102a5a87a9a5da
+850, 0xd74fc9d34c964bd3
+851, 0xda7e1e271d197070
+852, 0x1167b33a6bad0d13
+853, 0xd35c886fd0e28798
+854, 0xfb3334085bbcef67
+855, 0x88f4957ddc912f99
+856, 0x7c1b0e356835cffa
+857, 0x8c737bc009bf5a1c
+858, 0x44edc242bfd88b0f
+859, 0x391f8b5db15f8b01
+860, 0xd44794c8a4245701
+861, 0xefa90e38ba4a2f6e
+862, 0x597f65c886e697b4
+863, 0x28972f6be3ca8677
+864, 0x18a487b5e89a9dbb
+865, 0xffb15ebcb8a15fb1
+866, 0xa1f64108b7feeab0
+867, 0x36fc88b440612004
+868, 0x72a723294ba9af87
+869, 0x1a38da0ff8f187d7
+870, 0x529d7f6cd18f664a
+871, 0x6a5941953b4732c7
+872, 0xe91243bd8fb27a03
+873, 0xb80c55de03262828
+874, 0xacb9183e5b28a8d0
+875, 0x4c4ca12eb3d5d2e5
+876, 0x758635a20eb18211
+877, 0x211e03e90d6bd001
+878, 0xe36e20fbf0f271b5
+879, 0x4daecb676fc64ebd
+880, 0x8f1e82c4dd582eb7
+881, 0x6e3c35a21bca1b8f
+882, 0xf3c2a69420f159e8
+883, 0x2cda4d630caba89f
+884, 0x4c93f3f96360d308
+885, 0x4192046fb5e9d801
+886, 0x349f2b172f49599c
+887, 0x7bbff8dd8b480e6c
+888, 0x83b33fafc4388bf
+889, 0x9a5440f806d9d1b
+890, 0x8d6b62101dcfe51f
+891, 0xbc7dd6987af227ca
+892, 0x4338e67e0d6ba6a0
+893, 0x4a23deabbb5fc3ce
+894, 0x9f8edc91e6356eb8
+895, 0xf6b723dd2dd5f80b
+896, 0x35c558dd3443021d
+897, 0xa559dd33c2cf594d
+898, 0xa50ceeced7a82783
+899, 0x21107b581db4ee9f
+900, 0x13e8dd9302e8c97d
+901, 0xbd8491f437e57ad6
+902, 0x72f4c2a57c06f35f
+903, 0x518fbb95071d8d7d
+904, 0xcdbbe8d47f9b13e9
+905, 0xe8152b0f387251cd
+906, 0x411070a4f345676
+907, 0xc589c285b962389
+908, 0x8b0eb9e285844319
+909, 0xe2b007f446a21b38
+910, 0x868ffafb958a6c40
+911, 0x19ccccd559408de0
+912, 0xa7666f366db0ae71
+913, 0xd78c5f137da6dbc2
+914, 0xeeecc913fdb9af03
+915, 0x7a5afb2f3d54a396
+916, 0x64fadf73d7ba200b
+917, 0xaa1b82c6b4b346aa
+918, 0x9a312d9482244a60
+919, 0xadb3c0a30f68d0f4
+920, 0x21eee75a717008c1
+921, 0xcda2779023f54837
+922, 0xea3c577c6d7783e2
+923, 0xdaae89efcd431a13
+924, 0x9a6102d2dafaded8
+925, 0xd29443448e01734e
+926, 0x6b968e58c3d5bcd0
+927, 0x13949d0c5c0f9d19
+928, 0x7053eef909932489
+929, 0x49fb97e33c279171
+930, 0xc955e4854e254d03
+931, 0x3300cb752a7834fd
+932, 0x8319585b09da0928
+933, 0xd35c64e4ce23a294
+934, 0x9a41d980ba1774dd
+935, 0xff570729be1f3f02
+936, 0x3f68ae1c3e690a41
+937, 0x6f58a3e861159e42
+938, 0x111d9975e94f0004
+939, 0x276d3ea0ff1ca6c
+940, 0x4209cb1f5ca1c594
+941, 0x71699dc4c58f1bcf
+942, 0xe0288bffc5a27a2e
+943, 0x6c0962c36163c4f5
+944, 0x3a8ad088b4fd204f
+945, 0xb945dc7721092d36
+946, 0x315f4c1738bdf365
+947, 0xe07ddd7121cafb70
+948, 0x626fadaee66f331e
+949, 0x6fe3f71dd5e7ebe1
+950, 0xe3cfb6b53bd8713c
+951, 0x30f5b732f7070968
+952, 0xce2f941f93b957f2
+953, 0x116897bad7f55bca
+954, 0xb9d2c4a98826c3ff
+955, 0x9672c28485d1c95c
+956, 0xd0656535c3df1e44
+957, 0x15294f18a999528d
+958, 0x82a98977ad1e933a
+959, 0xddd17b6eeced5f84
+960, 0x9901a04270fa2d5c
+961, 0xcd2a8d3ab69a0c62
+962, 0x706bf86127a4597b
+963, 0xe614aa96ed708afb
+964, 0x7f6361ae8f59987
+965, 0x6a355657b59c4874
+966, 0x5211dca87f30cdd
+967, 0xa21cbbc602f58ee4
+968, 0x68dff176c9b02a7b
+969, 0x68f89bb7bca83c5a
+970, 0x229cb884febc7e56
+971, 0xce4f300cf6b70884
+972, 0x6ad3f343c76c5e0c
+973, 0xb059a099f121222e
+974, 0x9e990641d81a63b8
+975, 0x5564e79afe160ecb
+976, 0x2a9fa9c590511dcb
+977, 0xca36751ba40931da
+978, 0x23a332a9fe1104aa
+979, 0xdfe116c321547662
+980, 0xf484bfbe18f2c1cf
+981, 0xf8f2b4adf2d1ad4
+982, 0x4308800511929ba
+983, 0xe2773c41e0082a51
+984, 0x6b74adc21bac6b3a
+985, 0x1faa6a3704bd1b66
+986, 0x89e3e641298e87cd
+987, 0xcb2f118548abcdc3
+988, 0x690e34dfb4153ab9
+989, 0x103d668edb5f7e88
+990, 0xb29d9f22b3b1d4a4
+991, 0xc4ce3be9022b314d
+992, 0x1cb3d5af1306da15
+993, 0x8236da372d964cce
+994, 0x79188ac299f06c2b
+995, 0x953dfd978aad2545
+996, 0x6058e1066e7285cd
+997, 0xf47307b50589e391
+998, 0x2923873ecd9c4d32
+999, 0x4c44d61328ac5e4a
diff --git a/numpy/random/tests/data/pcg64-testset-2.csv b/numpy/random/tests/data/pcg64-testset-2.csv
new file mode 100644
index 000000000..779761d0f
--- /dev/null
+++ b/numpy/random/tests/data/pcg64-testset-2.csv
@@ -0,0 +1,1001 @@
+seed, 0x0
+0, 0xd4feb4e5a4bcfe09
+1, 0xe85a7fe071b026e6
+2, 0x3a5b9037fe928c11
+3, 0x7b044380d100f216
+4, 0x1c7850a6b6d83e6a
+5, 0x240b82fcc04f0926
+6, 0x7e43df85bf9fba26
+7, 0x43adf3380b1fe129
+8, 0x3f0fb307287219c
+9, 0x781f4b84f42a2df
+10, 0x36dac886f4232c6f
+11, 0xa32006a96a8d46b
+12, 0xa56e609a788ce098
+13, 0x75711678fa371144
+14, 0xbcdd4619fa063896
+15, 0x5cb5c9a1594f1a04
+16, 0x799e6cc7d09bf3fd
+17, 0xda1a4b52f72a8c6f
+18, 0x374b6f698c864e48
+19, 0x96a3e4d45b8d252d
+20, 0x5fc89e7cbf7735e4
+21, 0xe0cfe37beef7efe6
+22, 0xc3467c95f4649808
+23, 0x95cbda6a3275f18a
+24, 0x3a4dc1e59bdb4172
+25, 0x47f8755023ac78b5
+26, 0xef8e166bf07dfa95
+27, 0x40065cf0fa99882d
+28, 0xbaa083ad70102eb6
+29, 0x7c88e9d1a72a8dc
+30, 0x1484e44aa83e901e
+31, 0xf0f8df78086fdeba
+32, 0x5114e38e0cff505d
+33, 0x7e04bb9a2828c944
+34, 0xb88c0de9e2af5658
+35, 0xecba992ca7e9178d
+36, 0x8b40b65347cfeffb
+37, 0xfce9281a9381a55f
+38, 0xfde34f9f228fc03f
+39, 0x8c46656aa79eba9d
+40, 0x1ed0d3f416073189
+41, 0xd7adcc20a26d48d1
+42, 0x2429dcfa355eddba
+43, 0xec100f2285aaad68
+44, 0x91a83984506e1ef4
+45, 0x4c10c0f973e3cba5
+46, 0x45d0d0ad9ab6890e
+47, 0xa52b22d88ddb6090
+48, 0x63f7e7549bf80c43
+49, 0xfb03f87e5ea7137d
+50, 0x822f96594246a4aa
+51, 0x42242b1335cd3424
+52, 0xf78652fc51ec76ac
+53, 0x24db7314bda69cc5
+54, 0xcce4cf66737c8427
+55, 0xffd70eeca33ed90f
+56, 0xc154aff2caddd546
+57, 0x59d47a8ccd59e1bb
+58, 0xabf793045ca561f8
+59, 0x3f1486708729b21d
+60, 0x76ed98409f3f9abe
+61, 0x3f0bb2cd7cedd012
+62, 0x448f78da1713ac85
+63, 0xddbae7151c1578b2
+64, 0xcf94237ec0973cd7
+65, 0x76a0657cedebac81
+66, 0x2b13b564bed7a3b3
+67, 0x47a6fc0f4604c781
+68, 0x22acf016523ae80f
+69, 0xf728771b939c13a2
+70, 0xab4aee3986c80ec8
+71, 0x61d8c8c918b3fe52
+72, 0x7a40380c747f9044
+73, 0xfaf974af2e96a882
+74, 0xb8bd56d90c69d42c
+75, 0x7cea307dda515497
+76, 0x56d0858a27ded2a3
+77, 0x8717ea17698706b7
+78, 0x6b34d0c0587e8867
+79, 0x387a8142ee80d29a
+80, 0xbba414cee59e3194
+81, 0x6d2fe8bec0e51a8
+82, 0x11d5dc961ba15ec5
+83, 0x7af1ae07932b2fb8
+84, 0xb13ea6b28d63b57e
+85, 0x7e89a6f060cf59c5
+86, 0xad1f662c4daa4764
+87, 0x929a054dec3e229f
+88, 0xf7f41c2a34920f09
+89, 0xf0eac1b75822b72b
+90, 0x24f311773d90d399
+91, 0x9c2147da3d098c17
+92, 0xa62963f5bb0f8b9e
+93, 0x97f650195285e480
+94, 0x602433fd24fe4125
+95, 0x6f17d6e3b5fd704c
+96, 0x3ad6f2cf0ffd6a04
+97, 0x73a6d93edf693e03
+98, 0x467d4e6fecdfdb20
+99, 0x6aadbba2b2f8a2f8
+100, 0xc865bae9d8713526
+101, 0xa94d7c6b462e5acc
+102, 0xdcbb47fdacd4d865
+103, 0x80aa6a71fd60cb40
+104, 0xf27ad62910288223
+105, 0x88f93784d309825c
+106, 0xf7f9a500b821c886
+107, 0x6cd6e37a5dca4830
+108, 0x57694853b9c75561
+109, 0x9c7ef1aa6b8f2c1
+110, 0x12046439309d6e40
+111, 0xee3d652c43bd35b9
+112, 0x3838110676b26d7a
+113, 0x9efd697137fa24c9
+114, 0x1eeaa149a7edd5be
+115, 0x17eb32cd212e374a
+116, 0x73dd5b7d7fd3b280
+117, 0x788e514de9649f29
+118, 0x6e2fb96fbf87fe8b
+119, 0xc736a34c7ea74137
+120, 0xa4d48bb7df0e3c51
+121, 0x25b66ee78063d37f
+122, 0x9058e087b9696e7
+123, 0xa2e6397ebdd3d935
+124, 0x394a16ba856e6899
+125, 0xe4aad4f1bc61d046
+126, 0x5e4904686af5c43
+127, 0x4e58956c61a1880a
+128, 0x7328c827d6236eff
+129, 0x29463809b511cf73
+130, 0xceb2c403cef62247
+131, 0x9ccc00f358aa8346
+132, 0x6fdc1c42421ba33
+133, 0x1111d660460f5300
+134, 0x97a4f922e55a9226
+135, 0xbc2a217152bfbc63
+136, 0x3617700c68d104d9
+137, 0x8eecc63c4a929622
+138, 0xc69cf9d8f8b45df3
+139, 0xa2a8ca8262f8921b
+140, 0x4339edf9e292f9e0
+141, 0xfe385e2e7f6e1a1a
+142, 0x5f30d1b803abc1d9
+143, 0xf123207050238c3c
+144, 0x79e3401200b54b1a
+145, 0x858d7ce163d4de92
+146, 0x5803a44cd013b965
+147, 0x17c65b0b01800940
+148, 0xc50b38bb58dcb3c7
+149, 0xe476e9925898603
+150, 0x3972fb0fa748a3a5
+151, 0x93da971efb1036f7
+152, 0x658bab8ef6082bf2
+153, 0xf664abd0de92444f
+154, 0xa2145e8039e61d87
+155, 0x28af5560cb0ee0ac
+156, 0xc1e43e6a30cefef6
+157, 0x74f61d623cc6965e
+158, 0x3ee0139a07b6c130
+159, 0x214992e8a6134c54
+160, 0xaa83b771c9421231
+161, 0x15487762c93cf5c6
+162, 0xa3d37b883fffdfe8
+163, 0xe398d2bd15c1c511
+164, 0x3154f894aedd5938
+165, 0xc7ed5190721ec2b5
+166, 0xca02cf8dcfef83b4
+167, 0xa22c6a2e5460e0f3
+168, 0x2d72e4d264875109
+169, 0xf282e30c8b945616
+170, 0xa1a286624feece2e
+171, 0x6f773be8548d3fe
+172, 0x8c6dc6f48c83c30f
+173, 0x13dc5926122501a1
+174, 0x5537f3d25d126e0d
+175, 0xdb654b8409365aa5
+176, 0x55d8f727e066e818
+177, 0x534841122140f9a3
+178, 0x4e4ecc7b2ce8efa0
+179, 0x3655d535028e4044
+180, 0x6c2ad71379f15365
+181, 0xd1f1238395ce193c
+182, 0x4ecd9ccc56595a72
+183, 0x3304220c15b60f7a
+184, 0x3726fecf394006bf
+185, 0x4523e03e39a92ac1
+186, 0x191c97036c0e20a8
+187, 0xbfbcf849ecc37cd5
+188, 0x3c6090d256b1c780
+189, 0xf7e94dd0d3e02fd8
+190, 0x83034fb1c17bb99f
+191, 0xa7be8e0eb37c9260
+192, 0x177d2c560b0b55af
+193, 0x55da4c839514e82e
+194, 0xc9b393b79b0e7617
+195, 0xe9658403d3a140
+196, 0xc86401b988be38e7
+197, 0xe82baf54ee5df9e1
+198, 0x3a562e6572a853a4
+199, 0xcb83facbed1cb364
+200, 0x4db406f08ea62242
+201, 0x9cc816f5376ab97a
+202, 0xe65a32f96a78b09
+203, 0x59e7b42c496e2c2f
+204, 0x7e3e59a4546b6b33
+205, 0xc51a371516d5adc4
+206, 0x19ba384285a523ca
+207, 0x5b998f71002a0912
+208, 0x81ee2f95f53dbce1
+209, 0x966a0c0bbf15492e
+210, 0x80f88202ff2d29c2
+211, 0xf827f45274e32733
+212, 0x66a2611b73547490
+213, 0x1b2c3c3ae80997d0
+214, 0x264a86e09c63e4c9
+215, 0x35d4bf9c9d0d89a2
+216, 0x6051e319babb305f
+217, 0xdf0d08608262be49
+218, 0xbe7aa9a7697278c2
+219, 0xac531985f79fca17
+220, 0x7ce7de0d95ba34d
+221, 0x9a03956d30de1ee0
+222, 0x8106a5873e7950b0
+223, 0x804c06b1fab989fc
+224, 0x20d5fe19357e95dd
+225, 0xf3e89c08d1841c79
+226, 0xfc93b079bdb323cb
+227, 0x8f6eb1dea40eda88
+228, 0x6e7f6b657f6d971e
+229, 0xf2b15bb03a49e9bf
+230, 0xcf7fed1aff1786b
+231, 0xe53366adc5bafe42
+232, 0x89b853ed67fc2387
+233, 0xd13dadf3828f1df7
+234, 0x2f884ffbb83075b9
+235, 0x8efd2baea4771d71
+236, 0x7872e80c946c6bce
+237, 0xcc487bc4ea869070
+238, 0x820609347e4fdd75
+239, 0xe939e3c63701a997
+240, 0xf70ed361e42164e9
+241, 0xa9f29046fce9ba8d
+242, 0x61edfa750175e868
+243, 0xb7d2424653bde389
+244, 0xdadd225205e74ef4
+245, 0xecfb9a633ee3c774
+246, 0xcbc69459f0634f30
+247, 0xdbcd82538e0785e2
+248, 0x2b272f59ad36e01c
+249, 0x601a38897a57cc68
+250, 0xfa012b9e5722d8be
+251, 0x5bce8d48277d7338
+252, 0xd1b6ca2b93483dc2
+253, 0x8b94eceb88f55be9
+254, 0x93403aea5df5da18
+255, 0x57b6fcaf351c16b8
+256, 0x70f5e54095404bd8
+257, 0x9124d47160362770
+258, 0x987ed72af8aa305d
+259, 0x71e3a8d5156f82c7
+260, 0xf788e966e86f7004
+261, 0xcf0cd5911c4bb0e1
+262, 0x3340b119d3e2f28f
+263, 0x9952106be6e3bf95
+264, 0x99a6213e19fe9d1a
+265, 0x4f0d3811a8a5d481
+266, 0x62d732ee5f975dd2
+267, 0x3abc8340ab323ebd
+268, 0x15da761a2518c843
+269, 0xb453de7d4d15b261
+270, 0x4adc2d7cc2cc0049
+271, 0xcc9b7fa135c7dba4
+272, 0xa14857a738db2b52
+273, 0xce036b49e28c19c7
+274, 0xaee7e9fde421bd4c
+275, 0x15dd298915099a9e
+276, 0xa3fa6550b639b66b
+277, 0x5f27c59b035a6532
+278, 0x2eef2e6292288715
+279, 0xabd211c514e3699e
+280, 0x6d7bf9b33f8b09e5
+281, 0x91ff83561361c170
+282, 0x8f8e309797a91e4f
+283, 0x2b11ef1cedf1036b
+284, 0x6fc36ed305d27972
+285, 0x7e294e03a91eb01f
+286, 0xbe16009d8b2f38a4
+287, 0x2bf69c7b54e60cea
+288, 0x860079a07fade829
+289, 0x8f0ce6ae4c90d38a
+290, 0xab10e5f8ab4835fc
+291, 0x49ed43ddd4ca0a76
+292, 0x201eaa53b6df058c
+293, 0x2d9a4fdb16f6c1c
+294, 0xd3406193e1dd0760
+295, 0xad38857b542ddb6a
+296, 0x52ec1e450363aad8
+297, 0x6e65469594331886
+298, 0x4b027ce344dd6660
+299, 0xbc801654b4a1ccad
+300, 0x155be4bc51328b2c
+301, 0xa9a1965f9b2b5bdb
+302, 0x386b8dc34de0889
+303, 0xd60ee4b1b9cbb057
+304, 0x6c1e60b6914c4876
+305, 0xd07bf84dc30bf653
+306, 0x362d5b19b3f4f7e9
+307, 0xd145b8fef9a6a3d2
+308, 0x5c401126b505dd09
+309, 0x8f5d1d4446f9cb4c
+310, 0x725618359f1a3e38
+311, 0xaedad9cf455de2e5
+312, 0x7f7e4e549b4bde1b
+313, 0x35002b8e995f815
+314, 0x9aecaf8f393cade0
+315, 0xf346a49595886d86
+316, 0x459d5a9e92e9c149
+317, 0x60885682c3d6ff0d
+318, 0x90f5e985e08bfc3d
+319, 0xbf413a432e1a1b81
+320, 0x789503524aa48aa9
+321, 0x7880e5bb484bd49e
+322, 0x7426535c324b7176
+323, 0x190ad37f84acba3
+324, 0xbd52510631d4f5d7
+325, 0x98f794ad565c986d
+326, 0xa0ea374e66c0bf56
+327, 0xd683fe7102145335
+328, 0x9b3dac61db2f2930
+329, 0x470d31e3096c2450
+330, 0x1f445f8292f6f3dd
+331, 0x1687ff432def56a7
+332, 0x887d4e6617525278
+333, 0xcd81ce8cc70b13ff
+334, 0xaadbc4c3525c18e1
+335, 0x96d81490c362b621
+336, 0x128b95092e36796c
+337, 0xffeffbed0980cdb7
+338, 0x3bcef6c52b36d07a
+339, 0x400879c888eeabe2
+340, 0x373c9978059787d
+341, 0x35979fef9e20050a
+342, 0xf4581367f3fc43b
+343, 0xcec7b91352ed0186
+344, 0xa7b06e92b765203
+345, 0x6713f0b11fb9f296
+346, 0x95c53b86deafbd95
+347, 0x3694844a5eca42df
+348, 0xd0f334ea2c650574
+349, 0x5ae6771044110ddf
+350, 0x9f61d9087e7d36e5
+351, 0x28f04e48625e3e5e
+352, 0x6164d6b5445cf130
+353, 0xa36b5c2de27084be
+354, 0xa099a43d5c5f21bb
+355, 0x706edfb05fbe8b9e
+356, 0x7aacffffc81ebc3b
+357, 0x6f49121baebd0e6a
+358, 0x41fda7ba6df8f4cb
+359, 0x1bea4b596dbac5ac
+360, 0x71dd0261d65b02c6
+361, 0xad7f50624c15e9c9
+362, 0xf7c4eeb84d4866b6
+363, 0xa5e23dd382f48bdb
+364, 0xe6ffdf875d534bfa
+365, 0x40104d8444f75a7c
+366, 0x8218a42f24a88364
+367, 0x9d3f9382759cae86
+368, 0x101d7adffbd9ebde
+369, 0xf9fe3578d6b739dd
+370, 0xd23c47039e882eb2
+371, 0x37fc4fff590191b3
+372, 0x2a672fc8cd3e0cf7
+373, 0x995b8faabb4332c7
+374, 0xabc6117aa665a743
+375, 0x3fc49d11869352ea
+376, 0x4ccc3cfa9540797f
+377, 0x111c57f059fa3ef4
+378, 0x44a737bac79496bd
+379, 0x37924823edfe0774
+380, 0xa4d8ee07ab241d02
+381, 0xbb0bf46c50f349ac
+382, 0x4db0a8506e22199c
+383, 0x93239f377c85ba51
+384, 0x56f51e3970e409f5
+385, 0xe82d51ebc177609e
+386, 0xec866d8b473eaeb
+387, 0x42f8018bb955abed
+388, 0xf58ba8a916b04fa1
+389, 0xf12d2f0cb0a41cff
+390, 0x8102b5f91923cc2a
+391, 0x91d95fcb9cb1346d
+392, 0x819ccf0d122537ac
+393, 0x34646b1c3f9a8527
+394, 0x4a3a7df812ff79cb
+395, 0xc3d0b50ed434ad24
+396, 0x3e6cd372b453b5f0
+397, 0x39101f6226c43c8c
+398, 0xff41e5b6b7ff540c
+399, 0x1e8d77bc3f12e0f4
+400, 0x748d0860be568eee
+401, 0x5baac1f743bfeff3
+402, 0x8bdbd895b2eed2d8
+403, 0x5d3a01fa82bd88d4
+404, 0x577271d2de3e06f4
+405, 0xd4fccaeb0db61acb
+406, 0xa088377ed2b1d841
+407, 0x6f2e9e1566f37b5b
+408, 0xb8d85eef688c049a
+409, 0x6b7c06c55078761
+410, 0x223cd94cad1e0c32
+411, 0xbf27c193ae5881e3
+412, 0x5b784893a36d57dc
+413, 0xdc9fa53968c262dd
+414, 0xd7e820c76855fb61
+415, 0x72260eb94f096e2a
+416, 0x49144b5732ca1b94
+417, 0xba8d85a47582d428
+418, 0x558abe242dc84de2
+419, 0xc27b1d54557b9de5
+420, 0x80c1f06559385330
+421, 0x4a5c1d4252675c73
+422, 0x225e3a9f7b2da067
+423, 0x9ac95bac9d2234a1
+424, 0x696e500589e0e490
+425, 0xd0fe548d81c82185
+426, 0x68d8b783037b4743
+427, 0xbe1664f1a8d814f
+428, 0x2304308b691ca712
+429, 0x68e680af6b7189c5
+430, 0x13abe6c989949072
+431, 0x4c209f5029a59d0b
+432, 0x63361139df6fea7a
+433, 0xf07c52d8272cbdb
+434, 0x665023146f27fa7
+435, 0x7cb535c55ad7ad0e
+436, 0x76e366c7317eb1b0
+437, 0xa7d9b80b51585e9b
+438, 0x85f0bd60122198b9
+439, 0x34bc89d7e7827fd5
+440, 0xdfa1167988c85807
+441, 0xe78f45588bfdba02
+442, 0x172a023eba7357b2
+443, 0x7bc4c79e06ea755b
+444, 0x8aace6120b766b95
+445, 0x17b43a5a81b0db26
+446, 0xbc2b95819d959ff6
+447, 0x1b8841f2fe9c4622
+448, 0xc094a747ec30d67a
+449, 0xf5b93ec01484b937
+450, 0x659bbe8bdfd43f01
+451, 0x9d96c22bcf9c64c9
+452, 0xcf7df324fba052ec
+453, 0x5e4acd4f9e048e0b
+454, 0xe3a0e7e9869c5dd2
+455, 0x4eb444727e1c346e
+456, 0x7f6cda1ca7b3eb67
+457, 0x72fccac63ca649e9
+458, 0x711bfbf79a093651
+459, 0x5d48599fae7fd6a3
+460, 0xcc640119a296b34e
+461, 0x39acfb198b2b439
+462, 0xde759b50e2db66f9
+463, 0xe83bf8363827e06
+464, 0x484d50365017de87
+465, 0x4c3b5dbacd68394b
+466, 0xbbe47788c079218c
+467, 0xd44099290c25fe62
+468, 0x3b7d1bd6f91f3857
+469, 0xe7366a677d2b7eb3
+470, 0xfaa770590b197910
+471, 0x610b7a2fe8c4e80e
+472, 0x13451e1bf520a796
+473, 0x7e3d18c47e821077
+474, 0x8fd3a77c86eb9804
+475, 0xf24be740c87eadab
+476, 0xd5a52e6d0b58345
+477, 0xae386b5ca037a8d
+478, 0xb59fd16baf160f26
+479, 0xd4a05b473f6e0a8a
+480, 0x47ede6678c2c6420
+481, 0x8851ed397da6f850
+482, 0x1de775cdb392d89b
+483, 0x74e6c8ec9513ea38
+484, 0x30ae39e04187a984
+485, 0x614cfd09d043d601
+486, 0x3e0173138f562ee1
+487, 0x822d415a26bdba96
+488, 0x432f6dec77edd9a8
+489, 0x47a3a179627546b8
+490, 0x845dd7ffb1fe6d78
+491, 0x9778d5782de13a48
+492, 0x760198319b3cacce
+493, 0x420ee262d07dd7c
+494, 0x847c7424c365df20
+495, 0x56b3b590fb83ba16
+496, 0x7cd2410390a3e797
+497, 0xbb0c21b47aab8857
+498, 0x2743883e70a36a18
+499, 0xff8b29cdc75ebb7
+500, 0xe1e04a0f0379686f
+501, 0xcfdf3083b792f281
+502, 0x27392ca026b55e88
+503, 0xeeb195994fd56abb
+504, 0x7cf210041345882c
+505, 0x3ddca2b8951fea4e
+506, 0x21c89d88a3833996
+507, 0xe7128bccc4b25c9b
+508, 0xe39b0fb96a4c05ae
+509, 0xedf5326550594554
+510, 0x4aa45fe66b575558
+511, 0x2799fc8d3b06f777
+512, 0x2824863087187501
+513, 0xa15fa00818118906
+514, 0x559fc9e9344a310
+515, 0x1682745f8d571671
+516, 0x80b54f29f47a28d0
+517, 0x38e28103ffd9f771
+518, 0xedb5f440dab80945
+519, 0xdb0b8d04cece6091
+520, 0x1f60a7cae5ae8412
+521, 0x6719c0405e92b31d
+522, 0x56752def7d642302
+523, 0xa5b0900f93c352dd
+524, 0x5b82baf53be8983d
+525, 0x7726202ccee5cbb6
+526, 0x1641c84c7f87a765
+527, 0x835ae1a82be4265e
+528, 0x5f9ccee69c1d9da
+529, 0x3e2a2228e21039b7
+530, 0xa45873582866d005
+531, 0x7fbeffc99401e59e
+532, 0xcf66a6a974057890
+533, 0xd53704a96af96fd
+534, 0x1a8b5e3460704b64
+535, 0x6939b27bb32ba451
+536, 0x3c39293e637a0115
+537, 0x335a6e6b779b8c4e
+538, 0x75235d767dfd3d00
+539, 0xbdf0b36936b17c90
+540, 0x982dc5e4915a3a3a
+541, 0x74657ac256407f55
+542, 0x603a724457b796b6
+543, 0xf178694f7a3f98bd
+544, 0xe712de12db2aba47
+545, 0x1ca272d99a3355d8
+546, 0x93e7054d3e8dafc7
+547, 0xa29597810eff04c1
+548, 0xade242c0ae4bcea3
+549, 0xbcd226e2bd9d0e64
+550, 0x2e02e5736f889a
+551, 0x3622dc09f5fdd576
+552, 0x6e66bd2a10d78705
+553, 0x71d8f19110d5b4d0
+554, 0xacae934ab3d759f0
+555, 0x68d670d5f9272132
+556, 0x571fb09d082e7da7
+557, 0x154540c51b7d8b33
+558, 0x1e2f3710c0b6890
+559, 0xaf26a826ef444b30
+560, 0x9fc9fdbd9342be72
+561, 0x9b33b306d22a35e0
+562, 0xb6d5895f56d4197b
+563, 0x92fef06c1353b2e3
+564, 0x804e3eb42e65b938
+565, 0x73d5cd4bb7270902
+566, 0x274b8ac4925da8fd
+567, 0xa9a57999f5df2e2f
+568, 0xa6000be059e088b
+569, 0x57de4fc48c9e9e84
+570, 0x16727392e94ee9bf
+571, 0x53c9032f62848c4d
+572, 0x8a8ddd8fcf0676dd
+573, 0x1436de7c1735087
+574, 0xfa93b7d1425e8667
+575, 0xec34ca5f3f84bb2f
+576, 0x489ed44d0880c4c8
+577, 0xb3b6051de7a6f740
+578, 0x2f303cb0f4040f11
+579, 0x302c42a6adbcbcb2
+580, 0x28ed7b87695cd600
+581, 0xee78d3b782a2fcd0
+582, 0xc47a2441a1082032
+583, 0xec9965704a044f33
+584, 0xcb1563e968460dc
+585, 0xfecbb4fa2b544f93
+586, 0x3f3d7437a6d29a3d
+587, 0xe4bfaccd729414ca
+588, 0xb741ed954572d172
+589, 0xf34b49bf10ae47b6
+590, 0x1fbd1f068f1b796d
+591, 0xc1d556e64345b226
+592, 0x85bbfa50a899c7be
+593, 0x5310045dcf0fea8
+594, 0xbc6f6fb7f00e5960
+595, 0xf8bdf4074f2b5f5e
+596, 0x2a5817aa122dc97f
+597, 0x6d5ef86d6b8ad0ce
+598, 0x96e7ccc235abb79e
+599, 0x8d531c4cea492f66
+600, 0xfc124a123b4ce02a
+601, 0xc6087ffd9130c2ca
+602, 0x3a724c46f0f06175
+603, 0x59980713cfe4fe92
+604, 0xecde418e64a11bd
+605, 0x5c9b333a0f0337cc
+606, 0xcf014d508fc8e83a
+607, 0x83998bb2aa4e16ba
+608, 0xde8f5167ac0a40d9
+609, 0xe93b1846914c0dc7
+610, 0x668831ca8fd50c25
+611, 0xec764b87e402c28e
+612, 0xd0e1303e56f6b268
+613, 0xa6b9f3c4872dbcd5
+614, 0x12a89c116ad924f0
+615, 0x23857c375ae928c8
+616, 0x29b117f63f2e8c1b
+617, 0x64ff6cce272aa46d
+618, 0xd40fb15b38d59f70
+619, 0x6e5a6257c4cc0c66
+620, 0x7b54845e6e119a4e
+621, 0x9d88bf3dd9fa0f0e
+622, 0xb6687fd4980a5d43
+623, 0x4f2e3fef88b640b8
+624, 0xf07ac2f7e2df40fa
+625, 0x24059bd0ecb6c6a9
+626, 0x6204a47cbd57453d
+627, 0x8477fd1a13ea9678
+628, 0x4555083f5eada49f
+629, 0x352443e5d984691c
+630, 0x3e904f796a9c5ffa
+631, 0x11e182bc43754609
+632, 0x608cdbe03699a5d4
+633, 0x2619146efbf59f0
+634, 0x9b852370063940ee
+635, 0xa1d8e7e91e42a52b
+636, 0x19179affce38fa3c
+637, 0xf68ff1ccce70380c
+638, 0x12103cb41741ab38
+639, 0xdca7902fa6d960b2
+640, 0xad46a2fc70025445
+641, 0xac92f0b2d150d716
+642, 0x5de115babb43326e
+643, 0xf335366fd69e4bcd
+644, 0xe9aecd1f88889cd
+645, 0xbce60087987b51d1
+646, 0xcfd395a167103939
+647, 0x2fdcb12826ac806c
+648, 0xbd5129970869ccd6
+649, 0x5e922b68030c2698
+650, 0x7ada02a56d17779a
+651, 0x7a1254c652b99ccc
+652, 0x8be78733623db772
+653, 0xc22439789b68f0a8
+654, 0xee51ad4ab1a9a6ed
+655, 0x44b15fa27694d9be
+656, 0xc5b93e6c57805153
+657, 0xcf03df495c283a89
+658, 0x5c2a41954bb44bb
+659, 0x9e651cb8c650dd
+660, 0x73a20ee82570d4a8
+661, 0x5f805cab085e971f
+662, 0x5354410872a8f587
+663, 0x1b50ef4e9519338d
+664, 0xdeb873412301a1ce
+665, 0x3a286bb2f5f8db39
+666, 0xad117a0d4dc7f82e
+667, 0xdd880d581169d989
+668, 0x8356be106382a704
+669, 0x7c684ad93e996ff3
+670, 0x6b2d09e61ac02c11
+671, 0x99ad8c074fe046dc
+672, 0x4a9b4f0e7c4ffa24
+673, 0x38afdcb5893b466
+674, 0x7ad58ef97c3d35c
+675, 0xdd7c17c0d67ab69
+676, 0x61c77caf27938c86
+677, 0x978fc491080c0cee
+678, 0x4c1750f8684c1ca4
+679, 0x86b4c683d5fe657e
+680, 0x720e2bd8ec76cffc
+681, 0x73ca52b4a7dd3b85
+682, 0xeb10a691e12ea3ca
+683, 0x90355e369297b259
+684, 0x6c6bc16f639678ca
+685, 0xd989f4c724f8fba7
+686, 0xbb1ba7e2ca1c4391
+687, 0x81e4194500a0d267
+688, 0xbb25489c1dcbf93f
+689, 0x74d26b75e9f57fd
+690, 0x59c085fa99b6493d
+691, 0x3359805b0fc3fef9
+692, 0x60ef0f3a85e60650
+693, 0xf1a3692c8591e8d6
+694, 0xd7c8d2e7f3d3546e
+695, 0xe8fc8518c11ca881
+696, 0x3380ef12114d1818
+697, 0x87203c98ff21fcaf
+698, 0xbc37f8e034002ef8
+699, 0x891b7c3f55d02300
+700, 0x814eec8ff8956f0a
+701, 0xa370639852acceae
+702, 0x6c566310b6b00f15
+703, 0xd69fe78b9c8a05a6
+704, 0xb7b0df518738419e
+705, 0x2a0c1185b29ed965
+706, 0x636c841214c0a8cf
+707, 0xbf56297859e9bb72
+708, 0x2b5b9d432d6d008f
+709, 0x1ea586cf0f86f542
+710, 0x23a2a1af76cbc988
+711, 0x6c72c799b6ed93f3
+712, 0x2266785315f3bb13
+713, 0xb68cd6e87b94065a
+714, 0x5d395704514bb808
+715, 0x334bde59d526ee4
+716, 0xc5a6d87f96f055fa
+717, 0xd47001378b4dcf08
+718, 0x7305818a39057557
+719, 0x8f72c128eac6d32
+720, 0x4957ed799339bbdc
+721, 0xeb47d505f61dd5fa
+722, 0x8ce8817cd6acc93a
+723, 0x84ef66e511a52f35
+724, 0xbf5aa34bbaef7e1f
+725, 0xadaa5ba2a5ee660e
+726, 0x6eec8ac924058eea
+727, 0x8af63be4d1a1b202
+728, 0x88eccf85fd9fce32
+729, 0xf19a1122f394af05
+730, 0x8dcd15d1c14f5077
+731, 0x6c0f2e6135e36545
+732, 0xe58f89bec4d929c8
+733, 0x4eea88221d983ef9
+734, 0x51ae3956d53e1a80
+735, 0x40d8a172bf713bb6
+736, 0x3e33536e43ad4fa2
+737, 0xeff9938a179138fa
+738, 0x3e372bff1f51df8b
+739, 0x59b86a407817c86c
+740, 0x947164c2c57f9bd8
+741, 0xd8e67bb799d84475
+742, 0x4d9ed254d8189595
+743, 0xa021d8d181328996
+744, 0xc703e402f8e4688b
+745, 0xd1eb104c970dd5fe
+746, 0xd5bf4683b9337f8e
+747, 0x98f405a2d998f06
+748, 0x59c734ddd208e85c
+749, 0xbd167be2d43fde24
+750, 0x70602daab163fbe2
+751, 0xeb2f2b37cbfe13e7
+752, 0x28baa8f3fc4c4666
+753, 0xe212ffe352ea5ce6
+754, 0x538b93d2285eda3a
+755, 0x3a9482ac69a39e1b
+756, 0x3a98983ed4367767
+757, 0x1dc851c69e35d601
+758, 0xac7f83e4b02e9bb8
+759, 0xa939f99c5615ef7b
+760, 0x439437f129076339
+761, 0x79a251bb1d50ce25
+762, 0xaa7b6ff8f13a7424
+763, 0x1b244bd86404327b
+764, 0xc84d99185ab2a7d6
+765, 0xf6dcde975493c40b
+766, 0xdee46f4346cf6af
+767, 0x739b75df1fe18712
+768, 0x3d05cb298311f3e9
+769, 0x1fba9d9c10dc7780
+770, 0x31637fc416267053
+771, 0x46694e36246b8be2
+772, 0x8c67095ae6eaf1e4
+773, 0xebe2a68c27963dca
+774, 0x532d344b14306cf2
+775, 0x6a847c8f3ae2ac92
+776, 0x8034bcb5a50cbd6a
+777, 0x7544766784261059
+778, 0xe641799652df63ca
+779, 0xd8cacad7099c07de
+780, 0x429e62da116e4876
+781, 0x4442c8b57a5b7ef5
+782, 0xa7ea9c348cbeebaa
+783, 0xce1a34f57bb2a7fa
+784, 0xbb29ef457c9509cc
+785, 0x1ba1030b19a32c1c
+786, 0x412d1eb07cee79b8
+787, 0x3627dd37c6b36848
+788, 0x45432b319f26a2a9
+789, 0xb9a12e188cee2a29
+790, 0xeee69e0f1b1efd66
+791, 0xd4ccd61bc3fb8837
+792, 0x1b600476917cbf62
+793, 0x522950ddce26c142
+794, 0x956d8a5dbe9aa431
+795, 0x31cfba73bb524b7d
+796, 0xc3b709a56885a6ac
+797, 0x7341d4e32fffcdf8
+798, 0x5ed87c5315e4775
+799, 0x60fa512183e3dad5
+800, 0x4df6df14e9c2935f
+801, 0xdec2dc983ab42a9
+802, 0x28265e213fd6de41
+803, 0x2f85d825454add06
+804, 0xf18119191ac41aa
+805, 0xf870e36e83f4face
+806, 0x2a4b213d973d83c8
+807, 0x2c7094cde18ba8ec
+808, 0xb5998e0a1914446b
+809, 0xefcb960ff010503a
+810, 0xa8d928b99104aef5
+811, 0xe7a6893116e383a8
+812, 0x552dbe180a51b6c9
+813, 0x16b73f3832c9990c
+814, 0xfefee9504783e187
+815, 0xc12d3aa0c1f8608b
+816, 0xd5232106c7adea7e
+817, 0xb207e82667fb71ed
+818, 0xe93c50ef54a791cf
+819, 0x3099900fdf7b1750
+820, 0xaa2a46c352132ad0
+821, 0xf2414daa174335e4
+822, 0x33080f98c42bbad2
+823, 0x9df24fe0b5b13394
+824, 0x840eedf2eec5fdb6
+825, 0x3715e262efbc907d
+826, 0xa70a8cccfbe8a11f
+827, 0x4a57a6f16ea4c9f3
+828, 0xe03dbe2f1493e9e1
+829, 0xbd92759a7becd4e4
+830, 0x21a3d87c3766887e
+831, 0x6414f570caa74ef1
+832, 0x4e27490fc3fc0234
+833, 0xd4c40310c6ab2eba
+834, 0xfbe8acd168ffd62d
+835, 0x30b19992f1975ac8
+836, 0xaf93d22a8561f631
+837, 0x4574ebab81bed3b1
+838, 0x5390c6026e3940c7
+839, 0x7a5154d076a8b504
+840, 0x9676f2495f742943
+841, 0x8cfdb9e11bdb4502
+842, 0x36af5c8754d9ca17
+843, 0x61477e76367296ee
+844, 0xd6f5f40f66acc700
+845, 0xe62c2462e96af1b8
+846, 0x18029746ac09ef3e
+847, 0x871bbe15da7e0176
+848, 0x2443e806f54d179
+849, 0x9103af1634f9d0ac
+850, 0xe6e5358eaa0efa2b
+851, 0xdff4859198244a67
+852, 0x6e48c357be6042b
+853, 0x6bb9e8aeb24d656a
+854, 0x1b89fbb05f8438cb
+855, 0xe0cea835b4db045d
+856, 0x4eafe5c195e29d47
+857, 0xd2f0a452be9163f0
+858, 0xa7ae1d0eee928fe6
+859, 0x42c7a26c82a062c4
+860, 0xa8e93bcd89c5704e
+861, 0x73784be379f09c34
+862, 0x91f8e599342d013f
+863, 0x79c20bc462215ccc
+864, 0x6ee77bc91b3753a6
+865, 0xd2c116d1eb2650d0
+866, 0x388f9767cfe30ebe
+867, 0xdde5d5966815e7ae
+868, 0x459b838c87ca1dec
+869, 0xdf96cdb2bc916a60
+870, 0x215c4195b935d5ca
+871, 0x56c9f516528598e5
+872, 0x1d8492a9923640f3
+873, 0x97830ac45234686f
+874, 0x67f75117a7c952bb
+875, 0xf1939dc69391e65d
+876, 0xfc44bb1162cb2868
+877, 0x92b33d9df8fc6925
+878, 0x6c4496920de0d558
+879, 0xa4616bb101e924aa
+880, 0xa0afc9701ad83cdb
+881, 0x62d555323b0494d2
+882, 0xf18b31447a2dfdc3
+883, 0xb2ece318c128d4f3
+884, 0x29efea45a76b9b8f
+885, 0xae05362b365d9cd2
+886, 0x5c4d374ce6aefb44
+887, 0xb9cdc65eec94136e
+888, 0xf0212f42e3d4f5dc
+889, 0xcde7c5085f95d8d8
+890, 0x9cc3799673a644e8
+891, 0xf878d89199bead01
+892, 0xab684fb9666abf61
+893, 0x3070d399b7a07d3d
+894, 0x6d8c51673eeeef73
+895, 0x9bf4062ff5471832
+896, 0x92774cd03c511d00
+897, 0xc1aad7c6980df547
+898, 0x3291e3a234d50cc0
+899, 0x75645079bbe9d34a
+900, 0x7f28bab9eba28fae
+901, 0xa84415684ed6d765
+902, 0x56d9d67653cd172
+903, 0xa7bfed939db93e91
+904, 0x92940e5162d50470
+905, 0xcd6bf601e08f07a9
+906, 0x2ea9104d785e35cb
+907, 0xd771ddd541649214
+908, 0x352554afbf9258d
+909, 0x9d855486b77c5bc3
+910, 0xdb03cd71e906e1df
+911, 0x7c2621690aabc265
+912, 0x1dd4ac7369a04640
+913, 0x57796cbc93d4d854
+914, 0x42a373d152eca785
+915, 0xbe7389edb8b144d3
+916, 0x8b6245bf01d2e4df
+917, 0xacd1f9fcca317652
+918, 0x84545ac79a3eb960
+919, 0x2d2f28e6a8459db3
+920, 0x42b3a2e26ddeccdd
+921, 0xe858272777abcef6
+922, 0xd9b5be7340dec08d
+923, 0xe991af3579ac4fb6
+924, 0x7c30699b349fa6c1
+925, 0xbb842be14f7b5b9a
+926, 0x1d31e1ca791a1cf0
+927, 0xf2bd448ebb878bc0
+928, 0x26a6adf6709863cb
+929, 0xb11aa978539e3a34
+930, 0xce554a11bbbedd1d
+931, 0x553d3c012682a47b
+932, 0xb3c90ed36715903
+933, 0xda3c5c706e39e395
+934, 0x4e7f66006d583c2a
+935, 0x6424190e9d28ca3a
+936, 0x9916685e7384f3bf
+937, 0x1285e17347eb806d
+938, 0x877f10baf13e6659
+939, 0x222700ed5086438d
+940, 0xd2473d08396634b8
+941, 0xb6b68f3bc883a77d
+942, 0x168a489b0b7f5f63
+943, 0xee34dcf1f93ad3fa
+944, 0xd25ef824f614f65a
+945, 0xe30981905354f477
+946, 0x9463ef623c5eb3f8
+947, 0x46657408ea66980d
+948, 0xa2e58d51d6e8e7f9
+949, 0xd80d7df3007e9845
+950, 0xd90fa96f4fc0f7aa
+951, 0xd2a6059d171bbb33
+952, 0xb8bacb8f11c65c2d
+953, 0x401de84b6a8b1ac
+954, 0xf8b6eed644c802d9
+955, 0x30c927749fdd8e6
+956, 0x17c2f4f9c4524e16
+957, 0xa9c677daae4acc7e
+958, 0x82c78d9c6b10446f
+959, 0x5e544188277da629
+960, 0x7c6e1bd3b861dcd7
+961, 0xd4b00871a7f67d0d
+962, 0x6b66ee142821e6d5
+963, 0x176d5e39f3b22474
+964, 0x58ea746f62acf933
+965, 0xc61fabd9961c3a51
+966, 0xb27ce0f87b416e3d
+967, 0xd3c82b525b000e70
+968, 0x99578704fb3ff4e4
+969, 0x747da52468875493
+970, 0x5c5bfab7a474465b
+971, 0xd82276bdb30e3dbd
+972, 0x1d758772eebffe2
+973, 0xfed9d1e3ca887a6e
+974, 0x23dd5f7b3ff9472b
+975, 0xae2e842b51c9c598
+976, 0xe851bc45531123d7
+977, 0x1a18d2777151c29
+978, 0x9e82f3be14b12a48
+979, 0xdf9fdb3abc3e72cf
+980, 0xdbea56e918ccb176
+981, 0x47abbd896eb0ca1a
+982, 0xe850ee3cef9334dd
+983, 0x3d69fe95275e7f2e
+984, 0x4fcb936c048d8812
+985, 0xc98f0f6bb9865a99
+986, 0xc951cdb73514709
+987, 0x3ca839c27ca26de9
+988, 0x1478848a311f9cc5
+989, 0x35d2244064967478
+990, 0xe71df2d9732ffdc0
+991, 0xa12417d7b7b9e0ce
+992, 0xa1bb6da3f284f77c
+993, 0xf551e1c3171575eb
+994, 0x16083ac8a062747d
+995, 0x866d6c3a630fd4da
+996, 0x8a972ff46b3c5c4c
+997, 0x70af3b475e4a3d5d
+998, 0x2c143fd5c01d9cf5
+999, 0x68089ffadc8ea2b9
diff --git a/numpy/random/tests/data/philox-testset-1.csv b/numpy/random/tests/data/philox-testset-1.csv
new file mode 100644
index 000000000..64c1516cb
--- /dev/null
+++ b/numpy/random/tests/data/philox-testset-1.csv
@@ -0,0 +1,1001 @@
+seed, 0xdeadbeaf
+0, 0xa4016d3bd1adb1dc
+1, 0xa554a8f84b75ce6e
+2, 0x64aaf86f2a8b501a
+3, 0xd1de65006998520b
+4, 0x392794fdb78e642e
+5, 0x13aba45f3ded2bc7
+6, 0x72953d6a6ed0ce9b
+7, 0x81dc11fff0ade5e9
+8, 0x28c22fa622755161
+9, 0x2d0bf144d156bca8
+10, 0x88c67c8c249075ea
+11, 0xaf979d9c3fa6a9f4
+12, 0x8351dedf59eda5c3
+13, 0xa597c60a8db6df19
+14, 0xbd22a90d6d81b032
+15, 0x3034c0d2086b8564
+16, 0x2879c4883a14c06
+17, 0x5a66f8a2208a94f5
+18, 0xcda7bf16739a6681
+19, 0x369b3461c902a66f
+20, 0x14a3541487ef7613
+21, 0x60dc1cc40c854dba
+22, 0xb8d6129bcbdf1894
+23, 0xddc1e842a5ce4b82
+24, 0xf5a5c000d4804841
+25, 0x29c1123be4c5a3
+26, 0x928197be48d100b
+27, 0x9164d36b36459765
+28, 0xa5b361d3b9fe5094
+29, 0x966e6293e46a92e9
+30, 0x380b501fcd0e9e1b
+31, 0x538c1834694cb627
+32, 0x68397c2b7e36891a
+33, 0x569416ce7905efdc
+34, 0xf58f21254316c4ce
+35, 0x1e19d04d36f0446b
+36, 0x4eab321b90c3059e
+37, 0xf4eef8577ce3621e
+38, 0x86aa30aad7e74bd7
+39, 0x46ad14d76a4e9edc
+40, 0x9158798abc57ef60
+41, 0x54206b8453720f00
+42, 0x44e68b9350e349a4
+43, 0xfee4ef034f34ec46
+44, 0xd47125c4a5cd9a5d
+45, 0x174e9bb06dab2e1b
+46, 0xc6a3beafe03adf09
+47, 0x8a155bf8f077f2ff
+48, 0xc037f7a702e0e091
+49, 0x7121788b47bb1f67
+50, 0xcc1e3035fd6cee3f
+51, 0xf59ef1e37c98f033
+52, 0x54e5c5049de62701
+53, 0x46353528f1594539
+54, 0xb93695a2d9cf5a1c
+55, 0x29e0dfdf2ce8cfa7
+56, 0x598f527bbe1f0abd
+57, 0x7b1c84c93d833619
+58, 0xe05228837711bc0c
+59, 0x1cb8fc3e70fd977a
+60, 0x109d878184b67919
+61, 0x9f971fe0d44411b7
+62, 0x886c0994aaf201e1
+63, 0xc0dd321f1390b2e7
+64, 0x3fdef712372f8321
+65, 0xfa7c6d8918cd8a29
+66, 0x11c1eb4cb16252c4
+67, 0xbc57160901fbbc4e
+68, 0x9035cb331c1c6032
+69, 0xa75b7195d844181d
+70, 0xaee9b050676d9595
+71, 0x34d540b1d61818ca
+72, 0x851885a79cfef55f
+73, 0x2f5602c107a51176
+74, 0xf02cce653d94ae18
+75, 0x69703c81d7642c2e
+76, 0xc37f35a3762bf75d
+77, 0x584d48c1678ba110
+78, 0x214f883b77e43d91
+79, 0x32c9f2e834bc151e
+80, 0xa25ec540319a0279
+81, 0xd0ef31b3a764dd1e
+82, 0x413fc1760f4696b0
+83, 0x2ec088887c392c6e
+84, 0x643e07972c0d7edf
+85, 0x181da5ad37378493
+86, 0x7807a71aee267e7a
+87, 0xc8251e8b6f84c9cc
+88, 0xaecd92db4caa82db
+89, 0xe6b737b621d0f5e4
+90, 0x74a594617dfd217a
+91, 0xa167df989d02c069
+92, 0xea01be29eee2049f
+93, 0xeee29b33c17d78a9
+94, 0x3491d38fb23f3fc8
+95, 0xeb4487ea874377e6
+96, 0x7997f3b9ba996313
+97, 0x8eb5bda3e878f439
+98, 0x1a17f0c4997b9dac
+99, 0x449f4caa3e49d3bd
+100, 0x1d6864b879e608b1
+101, 0x32c53c6d5e4e51ae
+102, 0x508f8f76cf4660ec
+103, 0x6c06057521c22c33
+104, 0x868a66b6414f4e2
+105, 0x5715002f33452e98
+106, 0x115fbd06a3ac4e8a
+107, 0xfcac2badb17c901a
+108, 0x4c44e1e868322197
+109, 0xeb8fa2d7d096a4fa
+110, 0x5418a67b92163d7
+111, 0xd9c592de8e80a341
+112, 0x732a44e5218c1cf0
+113, 0xa9368ebfa3fe327
+114, 0xc5fea8642de21f5b
+115, 0x8aa7606b2c790548
+116, 0xdc345a26c0b0d0be
+117, 0xf3926ddb06d16b69
+118, 0x8221732a3335efcc
+119, 0xf9617131e08d7747
+120, 0x99327d82da6c2710
+121, 0x489965f6c29fc095
+122, 0x489883ac61fbf8a5
+123, 0xf93180c072491e2d
+124, 0xbc652ef0fb7fa413
+125, 0x26b645337e0f0151
+126, 0x221c4fd98d9d04a0
+127, 0xbf37f891d23b1a5a
+128, 0xf895c9daa40736d4
+129, 0xce74ab4966a7df8b
+130, 0xd2ede8866e13602a
+131, 0x6f1c653376aed88c
+132, 0x795f01d45d648320
+133, 0xe871c1ca660fb460
+134, 0x40ab3bbc97818d76
+135, 0x35d7ffca14a7ade7
+136, 0xc4e33deed96936a
+137, 0x23e3678027f084a
+138, 0xaca324e1826bc2bc
+139, 0x912083410f2c9602
+140, 0xe60447c78d94dab8
+141, 0xccfa70966b894010
+142, 0xda52cf984a6fcecc
+143, 0x4bd41ad2099c8555
+144, 0xd48a643116cbfdfb
+145, 0xbf7fc5b1bc00ce08
+146, 0xada212b7bd53caf1
+147, 0xd6852e20e7ec8990
+148, 0x37334ee1ef839cb6
+149, 0x4cfcfdfb1210ba72
+150, 0x86621c6062cecdce
+151, 0xaa81f5bd7dc7f04b
+152, 0x6803d22953c928
+153, 0x25af4104ef0196bc
+154, 0x3f43caa463f637f1
+155, 0x752c82a0d44e4276
+156, 0x564b16249685d0d6
+157, 0xba4752d6711744b
+158, 0x78ff9b2d759bd294
+159, 0xb93c8b5b9ca0ab4f
+160, 0x7a3b59e3c26e8aeb
+161, 0x483b45671cc7a011
+162, 0x600055f7d0ab48b5
+163, 0xe83dfca027b30174
+164, 0x5283c2d730c533de
+165, 0xf5ff0af35cc16bef
+166, 0xe65e629ad63ace2
+167, 0x4599b59b43471c90
+168, 0x3b883221ddd0edbe
+169, 0xd1bd681d7571586a
+170, 0x2f76707a866652f4
+171, 0xfa431b2763618557
+172, 0xbb30fd01840f73fe
+173, 0x4e05560dda8ff28
+174, 0x7d463765716205db
+175, 0x6802d6a4c64bc942
+176, 0x23f97ab176fc38c7
+177, 0x6fa71a806a74e049
+178, 0x4f8c47e05d613085
+179, 0x1c62a84ea1a987c2
+180, 0xb985dd9fcfcbaf12
+181, 0xbfd1d96717312296
+182, 0xf7623c95eba45fef
+183, 0x9aacb0d9d2bc45ed
+184, 0xe479947525498f64
+185, 0x6fcef0ca0aca8a90
+186, 0x278894094d25783a
+187, 0xdc02388636ed13d5
+188, 0xc62e48f5953cbcd7
+189, 0xe19a9fa5bed7628e
+190, 0xdeb078ae8fe5dfb0
+191, 0x4e6860e046964ce5
+192, 0xd8cdb2898e2a30b4
+193, 0x635e6d7bf2d5ad3c
+194, 0x382287d0bbc15096
+195, 0x4dce30919aaed075
+196, 0x91f2eeeb2e9d3bc0
+197, 0x8815aed14f2ce31a
+198, 0xd1587cbd77a69435
+199, 0xf27ba7a7f17e068e
+200, 0xc91ea6657949ca8a
+201, 0x8fb304e0fd14e8aa
+202, 0x20435550a23087b3
+203, 0x711f1c68e57b2b9a
+204, 0xea6994cf0be86f7f
+205, 0xd18c615acc777905
+206, 0xb90960bb87ffd1a0
+207, 0xac90e55e19311295
+208, 0x31659affc36aae91
+209, 0xd7d7e48ef29c958a
+210, 0xaee7da2da84dc993
+211, 0xdc7dffa68e28f198
+212, 0x2a640b7dddf397ff
+213, 0x96c8eb4f3eee1b5c
+214, 0x783f85e380c37624
+215, 0xe03c5ffaab657342
+216, 0x699873d780917aa6
+217, 0xb19fdd3fdfe2195a
+218, 0xe5ac242b8935d3d3
+219, 0x40fefd049828e9a2
+220, 0xc5376b89b3da4996
+221, 0x4a41f1092c5468bb
+222, 0x2155cf97cbf75962
+223, 0xaa3ec3edde80ba66
+224, 0x1caec347492ffadd
+225, 0xd80dc91a46a52d31
+226, 0x12f749bee8cd142b
+227, 0x82212e1e4913e774
+228, 0x5746ee2f1e40f3c5
+229, 0x8e62e2276ac29cb6
+230, 0x267b7a85f83e8b95
+231, 0x3c6436ef222f439c
+232, 0xb52ff729bf93362b
+233, 0x169d41a9b76ad990
+234, 0xcffd92d5315e9a76
+235, 0x2b6596632a14e62b
+236, 0x4b86680bf8d00375
+237, 0xe57684dbc26d0e4f
+238, 0xd437041fa45a59f5
+239, 0x7e1f0aac84d7e4e2
+240, 0x1187ce212e5e7834
+241, 0x76f1c2154a2e3d50
+242, 0x712d0e28711856a9
+243, 0xd5f54dc83e5c12ad
+244, 0xc24a17f46e4c418a
+245, 0xc51e029ea6d4f2e2
+246, 0xc31a655846a16146
+247, 0xef88f4da62201b06
+248, 0xf33e2f9d0a8d91e0
+249, 0xdc679372436366b3
+250, 0x25c9763e8013baee
+251, 0xd8aa69cdaac03261
+252, 0x57e8bde3bc84e10c
+253, 0x21c8c1336d7f36e1
+254, 0xe8accbc264dab29
+255, 0xc98322f62b53cf6a
+256, 0x8b83421277b969f
+257, 0xb57131b80e2e277b
+258, 0x444d7e89c60d71dd
+259, 0xb0d9e46bb1c33e76
+260, 0x3d5a684c6113db38
+261, 0x2711e1981a992b2d
+262, 0xf2d4db5c46a2ec57
+263, 0xed7b35c56ef6a104
+264, 0x83f3cdb9bc4ada6a
+265, 0xe022709b7ea47148
+266, 0xb570382def08f207
+267, 0x1ff1a063da5e52e6
+268, 0x1431c8c76bfd271f
+269, 0x36a3ae42d26ae46b
+270, 0xe49797ad98a160ee
+271, 0xd1facb5e688b3c6f
+272, 0xa9080cfeb38b849c
+273, 0x35e77aa7d3827d44
+274, 0x96d94f159c2bc6f5
+275, 0x9a1005b1aae0602c
+276, 0xc12ba0bda081de45
+277, 0x12781e7aa9155495
+278, 0xbc8bf25c33eb784a
+279, 0x2c59317df88aeaef
+280, 0x712c3f6f0647fe7f
+281, 0x6de6cc238b4334b4
+282, 0x5084214e6a6e8e44
+283, 0xfccf29c93e989fd2
+284, 0x908bd387fff422a4
+285, 0x1bea6614135216b5
+286, 0xfc77a0b775e22d6f
+287, 0xe060b6e9fea8bc24
+288, 0x28efa8a899554d2
+289, 0x2472913e201c807d
+290, 0x7105e53d38203b17
+291, 0xfd930d5b12f274af
+292, 0xde103731a6b10d73
+293, 0x1abed9ae891a6fd5
+294, 0x2ac90b2b44327c6c
+295, 0x8b2590bb2b05e83f
+296, 0xfa1d4711c71d541f
+297, 0xd4ca45335ac19253
+298, 0x8e1d05c7517e4e72
+299, 0x9c0902deb45e3f6e
+300, 0xbaba37c175ce76b0
+301, 0x601af65183731007
+302, 0x7eb8587a2d4c135b
+303, 0x20bb71c6e9199a23
+304, 0xc0ca4dc39757b5a6
+305, 0xcc6be1e1ed4d8273
+306, 0xcc74c8e5d18f5f7b
+307, 0x86ce3a5781885ae9
+308, 0x7b62ce783ec46209
+309, 0xfb266311a6c0550c
+310, 0x554773cccbec1559
+311, 0xa977c8205a4aae08
+312, 0x9ee5fc0c8fbf6dce
+313, 0x4f5705626b4f2d17
+314, 0x22d88963961cbf4f
+315, 0xfd6dc42eb7fcc0e
+316, 0xf88e30d786e0ecbe
+317, 0x78fe0f1b15436367
+318, 0x7499f2d214cb7268
+319, 0x913d1695a973ce15
+320, 0xb83d91cdf10b568f
+321, 0x93dbc1f9fb7d1e0c
+322, 0x7d7bc7061aad68ac
+323, 0xaa0601e59a625056
+324, 0xa72cbfff7c7ff448
+325, 0x7318a8d3915ace11
+326, 0x36842549fb894417
+327, 0xb68ea7ad73e99b6a
+328, 0xcbdf94cb59042237
+329, 0xa2a7fd9eddd13720
+330, 0x732dd9f06eb3c5fc
+331, 0x4fb08823a37032ed
+332, 0xe6c856ed41016c49
+333, 0x996c3d0e4f3b417
+334, 0x7b34a700117568fb
+335, 0x199eefcf92de5f86
+336, 0xa3f4961be1c5b0d5
+337, 0x5f41b28cf7b244b5
+338, 0x312410aa5e2fb5f9
+339, 0x1586dba27b082c7e
+340, 0x84ed5134c1917f33
+341, 0x59f4afdb3c49271a
+342, 0x925d17fb348c7028
+343, 0xfc7d3c57ea5636b9
+344, 0x6d1171ae97fb0915
+345, 0x398f4cbc4e9c54fc
+346, 0x1c2ebb92b1b504ef
+347, 0x3b2328cb18c05023
+348, 0x8d9db4e20415c26f
+349, 0x6a0a8a1b1845e93
+350, 0x8dc25082c60f2f7
+351, 0x717be0ac6519b0fc
+352, 0x96b0e9458c83e3aa
+353, 0x95672c97c1e1d811
+354, 0x38eeff8eaee7b86d
+355, 0xfcaf43097da98c20
+356, 0x3c3e92583d27de30
+357, 0x9c497d64afc8474d
+358, 0xd9490e6e4d69e245
+359, 0x659965798924d480
+360, 0x3fe6c83496d2e8a3
+361, 0x35f0e70b604c298b
+362, 0x6b2b04775eabc4be
+363, 0x91db116a3482d1f
+364, 0x4530affe8ed6651b
+365, 0xaeb91d6b34fac1ea
+366, 0x84c7b10dbcb7c855
+367, 0xa484c7232eb07597
+368, 0xbc408d28ff7b549b
+369, 0x59806824675e1397
+370, 0xd090322df3ed7160
+371, 0x98584fcfd0731210
+372, 0x72f1dfc286dac4c6
+373, 0xf19a3de3ac829f2d
+374, 0xfded8b979c32a9c3
+375, 0x11183cf8e5fd735b
+376, 0x1fd22c3a64e887aa
+377, 0xf1ad39eaea361b09
+378, 0xca21672cc4c0afcf
+379, 0xcf9ca801297c015d
+380, 0xb58af039ca2132a9
+381, 0xb2c1cfebc559a4d3
+382, 0xe6aeeddc924fe174
+383, 0xa4ee5d69059f2a35
+384, 0xb4891d7ce04994fc
+385, 0x2d86e4a3aebe4406
+386, 0xe0e37a9afe1410dd
+387, 0x3fad3ef7713a378e
+388, 0xe6546dc8f25626ce
+389, 0x610065e43da6b067
+390, 0x246433cc66b2ae3
+391, 0x987f33b8819a1248
+392, 0xdef42b9ae3070ada
+393, 0x372e29ed9ca79858
+394, 0xa77c59d5f963ad7a
+395, 0xab30aad91674d0f8
+396, 0xdef9084c78c88b91
+397, 0xf43176d0a08831dd
+398, 0x3c9199a67d636dae
+399, 0x1c1740467f01f9d3
+400, 0x526f48081c053f81
+401, 0xfb3e2a79343e5e29
+402, 0x18c4950887faec3a
+403, 0x8bc979d8a8985fa6
+404, 0xcf40e8843fd3059b
+405, 0xb19676125f3f52f2
+406, 0x4a0a6b19170a7ad7
+407, 0xd34de55b18b57416
+408, 0xbdc1e59e8ec23c6e
+409, 0x8ec4b1a49fecac44
+410, 0xfdc61f4b5c67d0b6
+411, 0xe2fe45308ec48888
+412, 0x14cdeaf1d4e6d7cd
+413, 0xc3ba3ec042a56233
+414, 0x332da8b89898979c
+415, 0xfba5de9a6658a159
+416, 0x6a8e39f8f9251c9
+417, 0x99de3f00ca6ac555
+418, 0x6b83762f9cde7610
+419, 0x2c9724e61be893d0
+420, 0x482951b5de7a8676
+421, 0x94c864bf7b7b3ce1
+422, 0xe7fb63eaa8034f7b
+423, 0x3606766d32778e49
+424, 0x832fb6d1c1702fad
+425, 0x231a34aa65f35f3
+426, 0x2dbbb19d5057dc11
+427, 0xadc96a7b0ec4d7c6
+428, 0xcedb950834baeeaf
+429, 0x10454de5dd5b2b4c
+430, 0xacb5218055b223a8
+431, 0xfc7935a53eef226a
+432, 0x7ecfef66f3a0a28d
+433, 0xa3c506354fdf354d
+434, 0xbf718d5dc3f872f
+435, 0x58a8cd40351434ff
+436, 0xf4a5f71e6b8feb50
+437, 0x7c362e216ad9c96a
+438, 0x2a6431ffce1c07ad
+439, 0xae65a7b73a58f481
+440, 0x67653634cd12e61a
+441, 0x6d1fcfb52e19bf3c
+442, 0x91ad77d4053b6726
+443, 0xd945d1507c4924f2
+444, 0xf45ae9093c093257
+445, 0x64b2b6a4bac0adff
+446, 0x5ff6f2b342d71de5
+447, 0x59925318c904944d
+448, 0x95dbf54419fb4864
+449, 0xd55ba61f567a0a97
+450, 0xee563293f29b5750
+451, 0x5837051585cad45c
+452, 0xfcf40f619994def9
+453, 0x5260f8ee6f748019
+454, 0x71764f26e092ad15
+455, 0x3ccbde223b20fea3
+456, 0xad863d51bde55140
+457, 0xc580fad0c3e9843
+458, 0xa5337a7858a6a49c
+459, 0xc43e9199c2d296a7
+460, 0xa3172bc5d23744fb
+461, 0x6fb2b18f90271d5a
+462, 0x1061bd95c79f5218
+463, 0x38002aa34425849f
+464, 0x4cefbbbc74ff719e
+465, 0xcadbed5627af6154
+466, 0x7bebd30f09338836
+467, 0xba48fd224dbcf41f
+468, 0x6fb65073938adfdd
+469, 0x1c74e5ea63a196f
+470, 0x6aa6af9b2f2c56b7
+471, 0xb34d1259dbc5283e
+472, 0x4e31ff60e92e2d44
+473, 0xefe7fa9b9e3f35b5
+474, 0x980e16e5be4f7b63
+475, 0x750f9235268a94cc
+476, 0x6007d403696373c2
+477, 0x13bcd1966ef5491c
+478, 0xa10fd6a45986ae0f
+479, 0x14bfd2c4cef77b84
+480, 0x9e337eaad201c664
+481, 0x87b8f2c4b3f086e
+482, 0x5f70b6cdb796ed2
+483, 0x1982229ded0932a1
+484, 0x466663c9cff20aa3
+485, 0x3272c93bbfd9638b
+486, 0xe403c4d56c483b55
+487, 0x93280ac4c48d7eec
+488, 0x614d81b45505675
+489, 0xac26c793b1c92d2f
+490, 0x98c856891490319b
+491, 0xc860935122dddb3c
+492, 0x4c8a4de8767c40bd
+493, 0x2ff98c8c4470f390
+494, 0x2f1c72a213351fe3
+495, 0xda85b3af5a866362
+496, 0x791b0597c01db174
+497, 0xb57b6f82b8cb8538
+498, 0x66b967b6d6b78e1f
+499, 0x10e25dff7fa9eb1
+500, 0xd7221749de25e2c4
+501, 0xe7de3dd12683afbc
+502, 0x4fab8db8efc41caf
+503, 0x55c69af11e357f2d
+504, 0x819ae1c6dc834542
+505, 0x181feb56b1b09fea
+506, 0x8c02b115f96e8a13
+507, 0xfcd520bd3bde3795
+508, 0xb8f13e1a17520781
+509, 0xc5077e62eb3455f6
+510, 0xb35be37dfe324f62
+511, 0x215c3528cfabaea2
+512, 0x4e8f73eb0ecfacba
+513, 0xb53be656d283bc61
+514, 0xc84605b63da1659d
+515, 0xdd14e6951ae728a9
+516, 0x23bf5133fcdb04bb
+517, 0x635b0a6bf6d16290
+518, 0x69d3fce4b4da412b
+519, 0xa7642708d4edf170
+520, 0xdfd18fcd236b3ada
+521, 0xdee7ba05f5412891
+522, 0x4ef5da00ff54f4e0
+523, 0x7996c43afbd32752
+524, 0x9ab61401c8ed09d7
+525, 0x9f0cbb35ba418b5c
+526, 0xcd335f0227cbb2e
+527, 0xeeb415a10dc69acc
+528, 0x8f306fd5fb98c8ce
+529, 0x87d290a1e5a13313
+530, 0x73bb14ad65f03b8f
+531, 0x1c38b0604e39eae2
+532, 0x6255e18db9d3f32f
+533, 0x821de64507a248c4
+534, 0x43aa3f96160e265d
+535, 0xb3933c53a37e8d6a
+536, 0x40537d6206fce5a4
+537, 0x3d6562e600316952
+538, 0x853babe67dc6d5fc
+539, 0xc9ec1b74c77a1be6
+540, 0xb17e8cba32fcb3b0
+541, 0x49acd5802328ad54
+542, 0x4f709402e925e357
+543, 0x17419c407e3c214
+544, 0x5e758c00e4ad3ff
+545, 0x7fde5d319d81baeb
+546, 0x979a20b570910f27
+547, 0x8f97c3b7bc9e2298
+548, 0x12e2ad36da1cc7f7
+549, 0xa236e7dca97e968f
+550, 0x1f04cbca5bc0154
+551, 0x3d6f127682d12600
+552, 0xc804b6f9d73c745f
+553, 0x46aa2378c21345cc
+554, 0x5c22330d6f5a499b
+555, 0xc4afed1b7326be94
+556, 0x1641ecf0c9a05ed2
+557, 0x1f78fcb51185438d
+558, 0x4e9d044248ccc312
+559, 0xa2bb59525d96e061
+560, 0xd3b0cbbe755638eb
+561, 0x8c8aa4004d6c679
+562, 0x7f8f8bedc781d3c0
+563, 0x80f49ed821a1a95f
+564, 0x773058f8744da45
+565, 0x7ad50eacc2795e2
+566, 0xb9e5489a8c83b4f2
+567, 0xc69f139896eebc1f
+568, 0x1e43056dd8930ca7
+569, 0x6f301a2edb56134a
+570, 0x6c2317117ee73dec
+571, 0xb2c8685976f265d9
+572, 0x16b2bde0a97af5a0
+573, 0x742f17525776cf92
+574, 0x1c61c4de2d9a2698
+575, 0x8c9af9dc2211b55d
+576, 0xa3cedd5c5841f80a
+577, 0xb59a544f559dc6a4
+578, 0xdf8fff92e4ee4db
+579, 0x56b7366da8b55759
+580, 0xd8e36fe0d19f75ab
+581, 0x23e355b5133d1b2d
+582, 0x372dbbfd1a91bfa0
+583, 0xec3a5bfc17d9f90c
+584, 0xda6fe7ef39ac4212
+585, 0xba4be9c5525834c1
+586, 0xd7fce5922edc81e2
+587, 0x601ea3b1ef2b295c
+588, 0x7019d5f3f8590283
+589, 0xd335a01edc3f7cc5
+590, 0x561e4eec723f9a8f
+591, 0x25d5c1063d9ce2f3
+592, 0xd92c0a861004228
+593, 0x4ced9cfa54381973
+594, 0x64575d21559fff7a
+595, 0x9b9941185367da2b
+596, 0x81bb1186ab30672f
+597, 0x3e22dee929fae7cd
+598, 0x9316d034a8d5f460
+599, 0x5544fa1e4ccfd6b6
+600, 0xb548fce22e15c29c
+601, 0x4a0c0d2156cec5c4
+602, 0xaf626e963a3d720c
+603, 0xa18ccb5d828344cd
+604, 0xacb3dad256bd3927
+605, 0xd9415709dd1b9838
+606, 0x5c5b91e09865d9f
+607, 0x916e81ea4277c555
+608, 0x47fd254a985abcb9
+609, 0xb4bf05873d1de57b
+610, 0x78be8dbe976e57be
+611, 0xe4497bee300305ad
+612, 0xa35bc9c0b8790666
+613, 0x50e32823b12df325
+614, 0x2d2235134b876e43
+615, 0x4d11093673d2f723
+616, 0xba9a6386593bb306
+617, 0xff94de871ecb0f5b
+618, 0xfa30dee676c84ad3
+619, 0x3deaa3f79a9c0e3e
+620, 0xee5884952aa60b5
+621, 0xc785a19fdff41a34
+622, 0x8b0845fe5f10501
+623, 0xa152b0aa81b88df6
+624, 0xa19f3d7b2118d7e7
+625, 0xd85b2d1b42a29eb9
+626, 0xc9e3567083b1b07
+627, 0x173666e13a07198e
+628, 0x5d523316500ff20e
+629, 0x911ba2359d617b98
+630, 0x5e2e9d9033cb6c6e
+631, 0x28d18aca1d7a2bc7
+632, 0xfd8b5c9ac51081bc
+633, 0xae9791fd100e0e0a
+634, 0x62bbcfdfac3357cd
+635, 0xad0eb70d33a1528c
+636, 0x3f6bf8f30c99a45f
+637, 0xcef98adf350e59a7
+638, 0x42a3ce1618e864ea
+639, 0xe593360a79499134
+640, 0xd2bd28c812adbd7b
+641, 0x4ea00dde869a07c8
+642, 0xf0fa202e5de5c677
+643, 0x80e31fa27e0bf3
+644, 0xf6e3947034e63c80
+645, 0xd792c5bd89a9ed4d
+646, 0xfab57bccb903c09e
+647, 0xff018b3b5e307f5c
+648, 0x9bfca67e7f2358d6
+649, 0xdec771cacfb0257e
+650, 0xeeefd9fea081fda7
+651, 0x1076a0fbd79b2c07
+652, 0xf44113350dd482e8
+653, 0xf191e0fc45973564
+654, 0xc3e3444776e39e6a
+655, 0xfdd317f3d4debba6
+656, 0x54ccec6719532a9b
+657, 0x9a6e8ca48d8c1e7d
+658, 0xc609af730bb6d832
+659, 0xa8b4c8470d968391
+660, 0x5cf64a7f47b204e6
+661, 0x5e965176dfa25003
+662, 0x66813628e15874bd
+663, 0xd35f6b140e1878e0
+664, 0xaac7f75e4539ee5d
+665, 0x39be402d139f7abe
+666, 0x1cbe6759828a8ccd
+667, 0xc670bbac7cb8211
+668, 0xb2c2d0f58e907080
+669, 0x93ef7a9684abfe0
+670, 0xceb30e0e22ed95a0
+671, 0x2c440668139c0076
+672, 0x32e60072a459bcea
+673, 0xb0bc43bf10e8f79a
+674, 0xa8531d49c980b58d
+675, 0x45f37d8f1c93663
+676, 0xc9fd75750fdfe198
+677, 0xc36b9ce50aeeeae0
+678, 0xe8fc776625253cb3
+679, 0x70c77614d74d06bf
+680, 0x51c1cad2d2f2badd
+681, 0x66a4db21d7db02db
+682, 0xfaf1271dee5b290f
+683, 0xae86058acd20130f
+684, 0x745443d08c22783a
+685, 0x223143faa7c25250
+686, 0x5b1cde70be845cb4
+687, 0x4f0df398464d9edd
+688, 0x6b20e39a68f7c30e
+689, 0xd37f02c77f07e8f0
+690, 0xe1bf957b24c8b2a9
+691, 0x562dc0bf6f77d28c
+692, 0x76c9f88dc50f60ae
+693, 0x9702059e9c5919c9
+694, 0x281383e10e722801
+695, 0x171f956c8b0712b2
+696, 0x5eaf54175f8edeb
+697, 0x7cc99560d2398c4f
+698, 0xc4d69f843120e45
+699, 0xc941f10439e94167
+700, 0xb34086ca06e338c6
+701, 0xa01d149b929f36bd
+702, 0xbd19942652a4afcf
+703, 0x4722d03a7e6970ab
+704, 0xc0e805aa2dc36bdd
+705, 0x6e68e26fecfeee1c
+706, 0x4aba8fbd1caf2a03
+707, 0xdebe09b8084c052d
+708, 0xb332c6c54337d33f
+709, 0x903cfa39f4899243
+710, 0xe688cd984e93f499
+711, 0x2c6ae72dc00fc910
+712, 0xde0d582c9957f91b
+713, 0xebe5afa3d0c3d91b
+714, 0x4fc2b36f2a137cc
+715, 0xed2107ce829ed259
+716, 0x8ffeb322143a2190
+717, 0x8e53ef386fb835a0
+718, 0xc73496bdb11c7047
+719, 0x6ca8c4835c9c4f8c
+720, 0x8ea4f4901f2e0265
+721, 0x644a3a28ff8560df
+722, 0x8953e7fdf979ed19
+723, 0x43dc435a24a800a3
+724, 0x2f15b97ed169e6f8
+725, 0x3ce69e60d6bcd79d
+726, 0x5a733285b92355f8
+727, 0x31606b5b067028be
+728, 0x1b4f051f3664639e
+729, 0x859f66e980f2a3a
+730, 0x46572b5b026e4d99
+731, 0x3a8c3dbab89136e3
+732, 0x30fcbfb69d4e2045
+733, 0xc2001ffc2ee041da
+734, 0xe2e789a7d6b5c353
+735, 0x20a6a29c6bc894a
+736, 0xb9c75c4ffd10962
+737, 0x58de12481df29458
+738, 0xc3a269b0fcf75ec2
+739, 0xfaba5acbbc077e5e
+740, 0x8c281f561efe477f
+741, 0x61d8922c3b1e9f79
+742, 0xc92d49730840a9ba
+743, 0x5ad9b3bd172d9804
+744, 0x4da50ea6a7a283b2
+745, 0x5e781612f5f1ca9f
+746, 0xb6a3887cbb2c4080
+747, 0x2b2a7dc43c678866
+748, 0x5a556144413f6593
+749, 0x286ee3aa8819f92c
+750, 0x45c169e82a919218
+751, 0x913f34ea9bf5d6e7
+752, 0x48d84f1aef099220
+753, 0x843e00085d83b19b
+754, 0xe639c98005983b17
+755, 0x223f1d8680cfe4ed
+756, 0x6b589d901b8e5ddb
+757, 0xce43033319d740cd
+758, 0xb400d5b22521cbd3
+759, 0x6b89f6ac56a9f684
+760, 0x21dc6e3bd591ee5
+761, 0xe062d33650fe9bac
+762, 0x7d843bb328d65a27
+763, 0xc4ba63ee38e9d608
+764, 0xdefe72f65f0185dd
+765, 0xfbcd7e2ef2ea79f9
+766, 0x514e2e715ce8f7d2
+767, 0x21af168dda65563
+768, 0xf0952635f1b9b8b6
+769, 0xcd098331c00eb2dc
+770, 0x88d48ac80843c49a
+771, 0x3fcef1cdf0cc92a
+772, 0xea558fc018ffc6d4
+773, 0x53fe63708554d32b
+774, 0x82a976d57ad79413
+775, 0x5671621e1cfcc958
+776, 0x9057b32b84fd54eb
+777, 0xecf93fd1f073494
+778, 0x95e3be825c83bbea
+779, 0x31f711958b37fcb3
+780, 0x7764e9c1b68905d5
+781, 0x19ff29bbe3450d1
+782, 0xbe9d66d0b7a63370
+783, 0xb90d94f54339e1c7
+784, 0xb86e7e4f983f5058
+785, 0xbb37df7a822c631d
+786, 0x34d71226eddefe66
+787, 0x647b6f2dd0167b3d
+788, 0x2964bea0cb5814b8
+789, 0x5111f6bf0575d9b0
+790, 0x598e941686def9ad
+791, 0x541a6d6e840b4142
+792, 0x6a9ec878a98f32cf
+793, 0x28e7a3598a6cbe38
+794, 0x22b0e914e1d9aad0
+795, 0x6e4f306af93619a8
+796, 0x62ad701e6072aafc
+797, 0x20f304620a3e4459
+798, 0xd7217bc244bb9cc1
+799, 0xeb66fa201326ce9d
+800, 0x60a8de18a022c5e2
+801, 0x31a14a91815a918b
+802, 0xd90de92cb757c772
+803, 0x738a110b95e161f8
+804, 0x2ef5cf2da3e98788
+805, 0x76b0bb8ff3123517
+806, 0x4bef942413b602e9
+807, 0x1c90bd1e24c93bd9
+808, 0x20eba165958bac22
+809, 0xcd5639b3751988cf
+810, 0x6fc8cc48b1dd184a
+811, 0xfdf2eab5e428ac3
+812, 0x621d191371614b86
+813, 0x3977622fee6de38e
+814, 0x501165fbcfb2a7bf
+815, 0x3d117c309c6a11a2
+816, 0xf1f6a98f2d352d28
+817, 0xf7b0984596865aca
+818, 0xb9eb071ad42bb21d
+819, 0x19c555aeeaf0cf28
+820, 0x425c90febfcc526c
+821, 0x8133e767f229ca4c
+822, 0x50534af80dc7d238
+823, 0x4267194590c15804
+824, 0x5afc2d9d7a0692ea
+825, 0x66feaa4a0443081
+826, 0x10f74efe039c5534
+827, 0xd79bc6e3e26cb0e
+828, 0xfd511b94e4229f4d
+829, 0x4b3735fb47ceecb5
+830, 0x7f3da62bb14a61d5
+831, 0xd92a4f2f534a654e
+832, 0xb906bf6a9989e53b
+833, 0x13018c2b34f999fa
+834, 0x6590385a18c6a603
+835, 0x8fc8db59a2567498
+836, 0x3cc13cfa2306cc4f
+837, 0xdd79e765006a327e
+838, 0xcb3dbb849468b870
+839, 0x9932fe5f00ea0e19
+840, 0xdb36176dc85cc926
+841, 0xff36a852d77a76a2
+842, 0x7228cc6dc7a583dc
+843, 0x3239f99e8c1e75bb
+844, 0xcaebcc7ada26fb97
+845, 0x58695e996613ec7a
+846, 0x2167b9da13f07e09
+847, 0xbe7bab67bb8bf660
+848, 0x22d605faa70bd9b
+849, 0x4126e31a67fa20e4
+850, 0x9f5e1b0c6ce38bdc
+851, 0xafdff88a50a87b2
+852, 0xcf22aadf30733a23
+853, 0x1fd9969ff955272d
+854, 0x8f7488ef919369da
+855, 0x9fc58576f9366b
+856, 0xcd113f7c06d404ee
+857, 0xf0c3dfbb77faa02
+858, 0xfa6b4df32e5b13cf
+859, 0xfcdfd2ef4ed2901b
+860, 0x2dc695fbefb81029
+861, 0x66cfcef096b1aa07
+862, 0xce6c9411a0a43c1e
+863, 0x7ce97001b7b94086
+864, 0xa9e80966efa21989
+865, 0x9db01384e57130f2
+866, 0xb4c4481e7ea597ca
+867, 0x1fc20274d0a21c7a
+868, 0x4e23bbbeb9f83211
+869, 0xd8cad36baeec8333
+870, 0x8742502cb17ca60f
+871, 0xd79d2dc157d5afd4
+872, 0xea1b2c00ffcf7ca0
+873, 0x1aa557af2fd43a1d
+874, 0xe73708cc03d175ca
+875, 0x6229a5af98522983
+876, 0xfa42c93d6b4f22f
+877, 0x1e65a381061656e2
+878, 0x8933f33ef286b6b5
+879, 0x17c422cf0aff3638
+880, 0x66c1c8e8488bdded
+881, 0x2d3c290f57f89df1
+882, 0x7be0a80f249572f1
+883, 0xe04b4abafd35f742
+884, 0xe7ae3420d1ae8262
+885, 0x7ac0a00e9418b10a
+886, 0x2c459481c2268d1d
+887, 0x4d83267be8955a75
+888, 0xdeac45087ce7e783
+889, 0x6ba80c634128a42c
+890, 0xaccf8778cb440125
+891, 0xee610bb6dbe2316d
+892, 0x4354e249ac02fd00
+893, 0x9d2fa76bc69ed31a
+894, 0x3e6119655e632f1
+895, 0x94b9895001a11b04
+896, 0x2e24e88414b70981
+897, 0x68ada416de03c378
+898, 0xaa35f41451efd2cf
+899, 0x28eb447c4d24bfe8
+900, 0xa5137e57245e7f9e
+901, 0xc9b19572f5c16c79
+902, 0xc940ce6692436e95
+903, 0x67411f98ce32ad1
+904, 0x1d40e58013165af0
+905, 0x3cec810dd5b24273
+906, 0xa7c6bc87d530d864
+907, 0xfc43ba7ae1a3fe7a
+908, 0x9d8794810bf47814
+909, 0xec8cddf1e0f9e93d
+910, 0xa564bd558f2d6414
+911, 0xc5106bef612f55a2
+912, 0x7be0dce9a92ba80
+913, 0x2eb62f6a3f2074de
+914, 0xc36ee0b068558f0d
+915, 0xf5684163785c9867
+916, 0x338887da708650da
+917, 0xbb716f53f9844869
+918, 0xdcfc496eecdda21
+919, 0xdf53415424439f94
+920, 0x3a05abd08e2d9ee4
+921, 0x18a6480a9399523f
+922, 0x9cc0dab9dc1983b0
+923, 0xb375dcd416372e71
+924, 0xbd8d75af2b5984a3
+925, 0xe86d2b59f0e26c0e
+926, 0xcb6b2f761c2c8fb6
+927, 0x2549bff97b63663c
+928, 0xfd29bc4f73ab6a9a
+929, 0xf690ba893bafe3c7
+930, 0x94c30c32da8d8ca2
+931, 0x44899149ffb1c95e
+932, 0xc23549c093cdf753
+933, 0xe2029fe9cc90d5
+934, 0xb2c70637a91ce191
+935, 0xbcc0420e35bf6942
+936, 0xe108b087861a186e
+937, 0x54a69c4b23f5f6b9
+938, 0x4ac1a35efeb13e67
+939, 0x39982383bf0173a1
+940, 0x9eb169c7613a5e48
+941, 0x848940fd0d654ff2
+942, 0xdb663c2c2718be99
+943, 0xe4b7a6ef4ca1cdf6
+944, 0xa560cffd62c75504
+945, 0x26ddb1df4420b2d0
+946, 0x980b3101000e3e29
+947, 0x2dd1445c80dbb8bf
+948, 0x135c42daf949295b
+949, 0xd19f5c74b895dae2
+950, 0xb690a628b77a9293
+951, 0xfe04f5a5928ab34d
+952, 0x2df10dc128a516f0
+953, 0x89f79ab12e337c3b
+954, 0xb98c589f33c1748b
+955, 0x30df1793cd9f6b01
+956, 0x6538ad32fa56a9da
+957, 0x93453d17e6ea27b
+958, 0xe2a92ebb82c104ca
+959, 0x2ce2b05ef3bc1404
+960, 0x1a327d3cdc07ed1f
+961, 0xa7c4bed4e2c10779
+962, 0xfe9c13e0e6912c65
+963, 0x15ea29dc894638
+964, 0x887160de1f9f0149
+965, 0x13a80eb973cf8899
+966, 0xef27446cc86e47a6
+967, 0x8890e569d70fc03e
+968, 0x1d0136f928ea9c40
+969, 0x99cb2f3b50431cbd
+970, 0xbba687f34ac3061e
+971, 0x23a9b639b2bb1a83
+972, 0xa93c79780f08e4da
+973, 0x1b9f12f0c9997121
+974, 0x512ab00fd2ed5bb8
+975, 0x928815bf7a2288ad
+976, 0xfb76b86de4b7f17a
+977, 0x38513665d5c85718
+978, 0xa7af48360b80b6e1
+979, 0xc08b51b293e84a8
+980, 0x7f044ecd175afdf4
+981, 0x73e18a7f5c3efa06
+982, 0xf6ef1911e91f0c87
+983, 0xe09e6a85a182b1d1
+984, 0xeca0e6fcfa3d7c66
+985, 0x2466210516727cc0
+986, 0xb8cc106a4bffefda
+987, 0x41ad3e2899041e58
+988, 0x4b5ba3abf6a9fec3
+989, 0x436fd42b29a1e822
+990, 0x9d9f29ada8a6b310
+991, 0xf9f066631426bda4
+992, 0x36660b826a0a1b8d
+993, 0x26aee243162a41ea
+994, 0x8c38cbfbf0d4b792
+995, 0xcda46557b68f0ae6
+996, 0x5900339a5e9132c1
+997, 0x6de1710051cdc7e8
+998, 0xb76aaba70884f776
+999, 0x297c27d0daac3c3c
diff --git a/numpy/random/tests/data/philox-testset-2.csv b/numpy/random/tests/data/philox-testset-2.csv
new file mode 100644
index 000000000..1c2d4eba0
--- /dev/null
+++ b/numpy/random/tests/data/philox-testset-2.csv
@@ -0,0 +1,1001 @@
+seed, 0x0
+0, 0x79969cc23abb91b4
+1, 0x5d45aaf4ec59c2d0
+2, 0x694e6df1b3048ed4
+3, 0x29caa3dbe7b3fad3
+4, 0x40de4437fb7c6391
+5, 0xced65c8c17cbd934
+6, 0x3a34149842e4c076
+7, 0x4bd68ff0459067c7
+8, 0x22a1cd386c044cb
+9, 0x707d516e7b2321bb
+10, 0xd31e9fbe226156b3
+11, 0x1e7c92b4a1111385
+12, 0x40b26d1e3ad54f68
+13, 0x2b512df2e2c7b340
+14, 0xbc566a77564902eb
+15, 0x38019add5d6c49f2
+16, 0xabc12bede6d19b9f
+17, 0x8ffda997c28b3314
+18, 0x7758a16e37aa29dd
+19, 0xc75be56d772bbd45
+20, 0x7dd842b9b7ef652f
+21, 0x874bb05dffe32330
+22, 0x6215b5d304389ab0
+23, 0x67b7659e0f6f074d
+24, 0x3dee6f7f663aa80e
+25, 0x35f1ebc3a43422e2
+26, 0x91ca84accba13894
+27, 0x19a82e52cf0a5aa5
+28, 0x99193ec846ff4752
+29, 0xaa85d8c7b98454eb
+30, 0xdc9fd9a6cf639903
+31, 0x6a7f3a04051963e4
+32, 0xe6315de20fb99cc5
+33, 0xc6e64d30591ea5e4
+34, 0x2c3a032c8af3ea95
+35, 0x4a6ac2609731f163
+36, 0xd0075b64c816b32f
+37, 0x6ba834fc94d46b11
+38, 0xce81c72980d4c0d5
+39, 0xe4527c390cd95d99
+40, 0x281a4f40fbef803a
+41, 0x8b96b67ef65af945
+42, 0xd8228d14e17d995c
+43, 0x822e355afd5a0708
+44, 0x76875e970f78780
+45, 0x1dd4625c16f578fa
+46, 0xed94ce7d1cf6affd
+47, 0xfd92c8d7728d9656
+48, 0x31da5185dee2c21f
+49, 0x8cb0591af5c81267
+50, 0xfca589420074336f
+51, 0x8521d19430fae019
+52, 0x20273ae3419daf9
+53, 0x27ee172bbae69340
+54, 0x98fce350defda2d6
+55, 0xbf8b350e4cc6c7ff
+56, 0x30718006f3e0170b
+57, 0xe06ba2542d7acd63
+58, 0xdd2af87a79df1722
+59, 0xd7fdadbfc51ac4fe
+60, 0xbf5cac7b6b07e5cd
+61, 0xead793949b8ed548
+62, 0x1840f7d95c0fcaa9
+63, 0x9abd3340d80c15af
+64, 0xa287da079eb9a1d8
+65, 0x1f0f530858927e87
+66, 0x56abe10813899150
+67, 0xbe0182c8f2ab4575
+68, 0xf9e318a24d72471a
+69, 0xca9fa810134e0866
+70, 0xd6f89ce5a65a0791
+71, 0x120528d7fc273c9f
+72, 0xef0c8cfe4b167be9
+73, 0xef5d36463f4d8c7f
+74, 0xa017cd944ee9c3d7
+75, 0x6c38f735847f9c65
+76, 0xafb6a0a5ced5e991
+77, 0x6d474406bcbfab26
+78, 0xa90b7997de0d58f3
+79, 0x1fed779ebc5d221a
+80, 0x77a5fb8e08e9ae6d
+81, 0x70150de0fda752f7
+82, 0x55a942db08ffdd56
+83, 0x6a79d3640b2e7d68
+84, 0xf74772c9926374c1
+85, 0x8f37888d12b4d52f
+86, 0xe331da4eb3ede8d6
+87, 0x9a248bc67dbf1b35
+88, 0x35fb9ec1b8f35151
+89, 0xd55260d8fa30259c
+90, 0xf2dc194b962d0dc3
+91, 0x7421accacb7612e4
+92, 0x84188c4b9af469a1
+93, 0x7dbf34d5fcc07b5b
+94, 0x6814325ad6bd0142
+95, 0xe81c0fb52c978dc0
+96, 0x7383aeadf20cdad7
+97, 0xdf578a6544720b72
+98, 0x2bf78fa3ee23ee5d
+99, 0x86de4a9a5d5b30ec
+100, 0x5399499273ab2312
+101, 0xb7e56b49c81098ad
+102, 0x545c46236115c503
+103, 0xbb1ebf762b9f6d50
+104, 0xfdf2aa180180f729
+105, 0x53cc5b07cfcbfe8c
+106, 0xb83e28400cedb4e
+107, 0x9c31e53a2e1d5692
+108, 0x3f0826e1d4354c85
+109, 0xf4fcfe401a637569
+110, 0x1efcd12f58dcbf87
+111, 0xa444a0c48c35221d
+112, 0x72d1c01d6b6bd176
+113, 0xed0d5d536d32ac13
+114, 0xe954ce02b26a6059
+115, 0xde62023001249b9c
+116, 0x841f789718400085
+117, 0xeec06a70d8c0621f
+118, 0xd291a59fc833590b
+119, 0xc6376fd2243fb8b
+120, 0x28a87d88893881ce
+121, 0x98d049b96c67da8a
+122, 0x1aa980a3f10e9bbf
+123, 0xe659d1a052cfa2f7
+124, 0xda413dc6222914da
+125, 0x661e049b99b2056e
+126, 0xe288cd7c76014e5e
+127, 0x865d98946f3ca341
+128, 0xfd4a9504dc3c9481
+129, 0x68821b878bea1073
+130, 0x98a9ae702cca6f4d
+131, 0xb02c218bd6ecf7be
+132, 0xad9f2cc45e9f71b8
+133, 0x1a73edfde94ac922
+134, 0xad6e36771e49599b
+135, 0x33132de3eae3b26b
+136, 0xe38bf29f74c219c8
+137, 0x9a7d1bd6d6954dc
+138, 0xfa0504aa41d2da3
+139, 0x18c2c0a825aa8c77
+140, 0x4575d335c5a52fee
+141, 0xf8e12f4237ad2574
+142, 0x4da2b3d1a4b207a5
+143, 0xd483ee8735b0cd0e
+144, 0x9b92d7e5650dce24
+145, 0x2e85af91423bab47
+146, 0xec285fc870875add
+147, 0xc049f35180d0b26
+148, 0xbf9d3486b1510d3e
+149, 0x6136b10aa8cd75a
+150, 0xf4a468c92c6b01c7
+151, 0xe6d7ac00bee004aa
+152, 0x5a060bd23d3d6a16
+153, 0xaf68b049fb08130
+154, 0x188cde6b2e6d18fb
+155, 0x913aa1123363a9d
+156, 0xb35a584b6899fbb
+157, 0x1a0b2cfcc7002419
+158, 0x51a6f914a1436297
+159, 0xae5af7e12493c9fa
+160, 0xd5a4a33453104298
+161, 0xd46c795e6ced12dd
+162, 0x24578f112e9896e5
+163, 0x3879bc9d1d1c79df
+164, 0x38d21818a9044427
+165, 0x1489a65967bbd74c
+166, 0xf004d910e27d5453
+167, 0xacae738e2b4a1b7c
+168, 0xee8dfe42955be33
+169, 0xd9d5d1ecb7524335
+170, 0xaceab4d48e8eb2a0
+171, 0x7747bb87ea6f47e5
+172, 0xfd1b1bab29e1a5b1
+173, 0x2f4b6b0f9300b44
+174, 0xdab086094510e334
+175, 0xa571c54824e95668
+176, 0xfc5108b22f0c15e
+177, 0x9989597611a00527
+178, 0x6ef24f0f951b29c8
+179, 0x5824eef87de85c1a
+180, 0x78a35def7f709c63
+181, 0xfdfac9f100645cef
+182, 0x1f0027accbd50b57
+183, 0xf4379eb0e470a43
+184, 0xe108523693012b4d
+185, 0x1dbcaa15e104e367
+186, 0x91a01715bfa8f4a2
+187, 0x90b12f2dc6612875
+188, 0x3a0c81439df90067
+189, 0x92bcce47af32a0cb
+190, 0xf1f8ec01579f0749
+191, 0x656fe00e45f73d01
+192, 0x66b3ce57b8a63a03
+193, 0x7f711c6efceb22f6
+194, 0xcf6c2d639062aea0
+195, 0xddc95dcbe9455707
+196, 0xe24dbe6495077239
+197, 0x7d02e17fba62ea00
+198, 0x84d60e07638b79c5
+199, 0x767bd78a1e45e41f
+200, 0xfe3fe1d74008b0c6
+201, 0x4b98deab82ab23a9
+202, 0xdb104f1846592508
+203, 0x23086e881366ad53
+204, 0x64c16b00fbf72cd6
+205, 0xb19eb55587ad61e3
+206, 0xfdb8caa9ab6dfe07
+207, 0x125b0675253c081b
+208, 0xbd8ca76e7797a1d5
+209, 0x6fa2177be1444f15
+210, 0x23c4388e40529ab0
+211, 0xf3ad977faf5aee04
+212, 0xb1ca87d8c64c3bf2
+213, 0xa68ee8636f7a4f7
+214, 0xa40199a2bec23e46
+215, 0x5fcae2801e7e0b4e
+216, 0x2e1260c7c7afef8a
+217, 0xaeb347f6912b9cf3
+218, 0x2702e2510b9b4e4e
+219, 0xd281ab9c087c1401
+220, 0x7d73d1c89ec1ecc3
+221, 0xfaf594c2b9bd6355
+222, 0x78641e1415fadd6f
+223, 0x6bcbc45443f34f98
+224, 0xc5ea1bbd7ad47fc1
+225, 0x21a6bde64e7934f0
+226, 0xe48d5c1eac30eae
+227, 0x7645dd59feeee713
+228, 0x236dc6e399a0f8b
+229, 0x7d47bb3105e270d0
+230, 0x5c30af0f8e670624
+231, 0xd77864a3d3eedbaf
+232, 0xa8ce734357f09a67
+233, 0xa5848bf5de97769a
+234, 0x197e3bd0511be793
+235, 0xf1797421fced9f11
+236, 0xab395568cdb296d5
+237, 0x2c163053937c4e5c
+238, 0x88aab0204548c66c
+239, 0x59e43e9ee50ccf47
+240, 0x5646ec79dc2b8717
+241, 0xdd21d5fe2594e739
+242, 0xe3b36b715e030f2c
+243, 0x72b9c7dc781ee215
+244, 0x3928edaa51d23161
+245, 0x18072b29ad229306
+246, 0x5a6e1a7146df0219
+247, 0x44fa2420a3a521e5
+248, 0x26c8c4d7e48e49c7
+249, 0x19829824d9ab3d0f
+250, 0x208e2308990de3ca
+251, 0x644d4c7725308bb
+252, 0xbcd356813965c89e
+253, 0x7cc4a5d0629a09c6
+254, 0x78ecec3f9f660e71
+255, 0x4c5017c2cc05d260
+256, 0x1a630b52a53d5d4c
+257, 0xaad6058d6091bddb
+258, 0x42310f01d0dec7ba
+259, 0x352501f1bf98692c
+260, 0x5b32220790b2eef9
+261, 0x9cec92f85a3ad24a
+262, 0x392bed113812b6a7
+263, 0x2c4a91bc9a27b61d
+264, 0xa3ddb8a73a00331
+265, 0x71564f4cc1ff38b6
+266, 0x3bf1cdb52f7d6121
+267, 0x317f2427d4ece2ff
+268, 0x61b510f62d30c1d1
+269, 0xf3118eb3bc72b4db
+270, 0x6cf9e03844d59394
+271, 0x9a48891e9593372c
+272, 0xe6f07884178198e2
+273, 0xdb8d7ffb3f7b48e7
+274, 0xd843287403436ab2
+275, 0x281067329d659944
+276, 0xa9be89389e933e98
+277, 0xa559f1b2c64d698b
+278, 0x177c147eecc213a0
+279, 0xb60d1b8907f932b6
+280, 0xbf3dfd3933f22dde
+281, 0xc97688e8fc9e974a
+282, 0xf10b069f84d5a0bb
+283, 0x30aef0a063e9948e
+284, 0x149d4526e4606eef
+285, 0x3d47374e3f68d21d
+286, 0xa8ec81fb5259d900
+287, 0xa8a2f4cdf3ea7a0
+288, 0x15bcdb63f1092d6b
+289, 0xec827b483fa8d1f0
+290, 0x31fa9b0586f00970
+291, 0xdbe7d320cf2931a3
+292, 0x1b11cccdc34368d1
+293, 0x1fe27662861788f4
+294, 0xf709d76eb49bd879
+295, 0x2450c5dc16476c8
+296, 0x7a0a7d863198b16d
+297, 0x5d1f6c9563f68aa5
+298, 0x36c7d7757e74eb02
+299, 0xc0656a90d456269c
+300, 0xeff66ab0f6d035d0
+301, 0x27afcd4b473c8f6e
+302, 0xadfc46fa3ee6ce03
+303, 0xd8096465daf41c99
+304, 0x602ddafb5eaa9460
+305, 0xd731e659599d021d
+306, 0x33c3a32355ab4e63
+307, 0x974e3554d7bcc0c3
+308, 0x249dceb9428a7bd4
+309, 0x378eb9b47abb256f
+310, 0xedbce8679ab00480
+311, 0xd1746d7de7777fdb
+312, 0x14a30aa451c0f7b7
+313, 0x1d28baed82fd8b04
+314, 0x714174c401e78e26
+315, 0xf1788905ecb84469
+316, 0x22eff71d89f9be8c
+317, 0x6b2819eb724b4e74
+318, 0x1636191b8000b39e
+319, 0x73ea3d60587f3cfe
+320, 0xe7ed97702c468226
+321, 0xe10824982050c4f2
+322, 0xfc2749ffbc81d160
+323, 0x5cdf3c2d78f56706
+324, 0xc01c94db79631370
+325, 0xc5f5776c2840747a
+326, 0xada78ed21449a7f9
+327, 0xe987713c3d87e4f2
+328, 0x7b8e12fcf69b7ab
+329, 0xd596a488c255523e
+330, 0x9e9b813baca7c51e
+331, 0xa624b911e58175a2
+332, 0x3c832b46e35fa5c7
+333, 0x515825156be5fb3b
+334, 0xe91c83a0fc6c7f4d
+335, 0x907e8ed6e7d67004
+336, 0x7de3df361f634d83
+337, 0x1ccf96f2394200c2
+338, 0x845175395e3598e1
+339, 0x4905098c8b06775a
+340, 0x4424d6e6a10c0c02
+341, 0x820010ef3887713f
+342, 0x2d918fc9225aaa82
+343, 0x32eba0dd41ce9092
+344, 0x1b66fe6dbc525c20
+345, 0x394b67ad8a323e4a
+346, 0x5e696185a5c86bd9
+347, 0x69b12c2752514602
+348, 0x1ff9214a510255cb
+349, 0x2bc5a0ca899aad12
+350, 0xb57d6e14b16a7718
+351, 0x79beb7612a6fd6e7
+352, 0xbc79c45b1f8e7f8d
+353, 0x44d32a278b964fcd
+354, 0x2e483a22ca7de50b
+355, 0xf5ceabc566b350f1
+356, 0x7b582ffc4b9d5e43
+357, 0x42ab9492574ac3ab
+358, 0x3a8a1fec1ab3e71d
+359, 0x75478c52e0efb094
+360, 0xaf1377c197c720e7
+361, 0xd1be85afc6bd298e
+362, 0x9a4e6e8660a4d81
+363, 0x1a4bb91a268e65be
+364, 0x3a10b0755792f8dd
+365, 0xe95153d3eec0c19d
+366, 0xf3036b6f8e02be83
+367, 0xdffc9d3fdc293619
+368, 0xfad8ee79745a8a9a
+369, 0xa9a8062d64f3dc61
+370, 0x7ddb3f6012d81dd8
+371, 0x623856260cae9962
+372, 0x35d0e6eb91622fa5
+373, 0xe3fcfa2208a3b5a8
+374, 0xcc8ec36185748ebf
+375, 0x762cd35896ae6777
+376, 0x5e529053ce500de2
+377, 0x6545fcfc0da9a2c
+378, 0x8cb156892a6669be
+379, 0x96f80d4770f396a7
+380, 0xbd99a1ca2c8d3e41
+381, 0xd6297cf0b8e5eb63
+382, 0xb522d18d7b34c41e
+383, 0x4c76d7b243817c1
+384, 0x733337cba2e74d55
+385, 0x769ee9acdce2279a
+386, 0x158fe92000a829d6
+387, 0x2de70d67481a26ee
+388, 0x481a32f89f48bbf
+389, 0x7910c1fd5b66cbcb
+390, 0x40e915445d6794ba
+391, 0x694dd31fc3616af4
+392, 0xf66a0f17f6ca78a
+393, 0xd09055d52155dd27
+394, 0xd0e4a5654cb1f0d3
+395, 0x27a33f6e7976580
+396, 0x2bc002e93ea14a88
+397, 0x8163bbc9277dfc50
+398, 0xd74612f9829a45e4
+399, 0x492779facb39266a
+400, 0x2b4a269c9d211e86
+401, 0xdc88f4805b8abb5c
+402, 0xdb8cb18b5beef640
+403, 0x14effaf6271aeae5
+404, 0x133fdf95232daaf4
+405, 0x9811dd5ee80ef423
+406, 0xe80815ce0f365122
+407, 0xe5a983ff40008d1
+408, 0xc22f3249a950a7a3
+409, 0x2d6a29c7daeebc71
+410, 0x7271a3a40d1734d5
+411, 0xb5efee15c4c99160
+412, 0x7d7c2efe86ddaf7c
+413, 0x928ad499a4d85e9e
+414, 0xddcef9fd941e988a
+415, 0xb57daba38cc70276
+416, 0x164b60673494c318
+417, 0x2af60e897eae1cb3
+418, 0x74181074bff82452
+419, 0xe7afe1452aca2b1e
+420, 0xbcee4075ee5e82f9
+421, 0xdeb277d596122a61
+422, 0xad4ec522ed5fcbca
+423, 0x7ae8d97528caa837
+424, 0x96f5bcd5902002ba
+425, 0x77127d87f69da6f3
+426, 0x5ebf71761fcb9e16
+427, 0x79c817f24b4acca9
+428, 0x21ad1662937a31a5
+429, 0x69e3ea5a65934f93
+430, 0x1b96b0d05b7f12f9
+431, 0xf1a68375ae6e350
+432, 0xbce495ba788c1f93
+433, 0x35281fc46a1ed6e4
+434, 0x38db141e96c2fb20
+435, 0x55d11f14ea71953f
+436, 0x2c00398cffff67e8
+437, 0xb16dabaa263e92a2
+438, 0x9f21e025912c81a7
+439, 0x67865a4fd348f4e3
+440, 0x8b37f5aa1d953557
+441, 0xf972409a9231da99
+442, 0xdceb2001f7ae4f3
+443, 0x8f840ed0e94b642
+444, 0x7fb486ac9cf23354
+445, 0xbf0731eb9fb2f26f
+446, 0x64f6a87eb3ad3997
+447, 0x2efaf458ab38b3af
+448, 0xb0a84922ae63a985
+449, 0xa6e4ad47f5a8bed
+450, 0x78ea04257180c6ea
+451, 0xdab32fcc7935f61f
+452, 0x81c51b7fc2702c1c
+453, 0x63fb80362df72986
+454, 0xb672007383cbe435
+455, 0x3c2795c9fd489191
+456, 0x382fba5fdbbd0d1d
+457, 0x5b7c398dd14c7819
+458, 0x62f0b67bf107ac7d
+459, 0xe064c5f9f54201e9
+460, 0x176eba949b66b75c
+461, 0x82678f7ce2748a4f
+462, 0x43ea9b0b4852476e
+463, 0xa7f9cf3569313631
+464, 0xc0833878700008d7
+465, 0x140e34c3d600d7f8
+466, 0xe0bfa1eba68fec03
+467, 0x4e3ae5e387d3f283
+468, 0xb799c08bac503857
+469, 0x217b43c04870ab8e
+470, 0xe5e845d2fd3bcfc5
+471, 0xb335c469515e740e
+472, 0xc2e3c4de7a47050c
+473, 0x817b2e6751cfc87b
+474, 0x59eb6cd8266ed00f
+475, 0x61719b760716f1af
+476, 0xc632bab8a5379b7d
+477, 0x3fd80526456a4087
+478, 0xce5ef34e009a09a4
+479, 0x4da72557a2c81e6d
+480, 0x45035c138cf0a07f
+481, 0x2e0e2c65cf2fd15a
+482, 0x5526e0f129feb1bc
+483, 0xf970fd5e145bb284
+484, 0x4ca7ada616378b04
+485, 0xa8f8ccaf6fe721f3
+486, 0x1b69aca028dec51a
+487, 0xc646b9db8f01cde6
+488, 0x77d8bc4b328434e9
+489, 0x5b8c1bd76c5d361
+490, 0x998199eb58998641
+491, 0xacae79454a30f83a
+492, 0xd1456bd45a42152c
+493, 0x1a7aee80e3e170f
+494, 0x5d611e45c9446edf
+495, 0x8c681b0c3daa09bf
+496, 0x91affbbcf9c1e020
+497, 0x7fa4f3756b231b2a
+498, 0xd2c13c5a29826810
+499, 0x993830f7fa0d51ae
+500, 0x80636484c971d447
+501, 0xbe32c99bfecf878c
+502, 0xf1880b2dc3e4f7e1
+503, 0x4b8fa1cc8fe57b65
+504, 0xdebafe0f90ad1b5a
+505, 0x1d11dd9200f8b4b8
+506, 0x75042aaa397d9a99
+507, 0xc9ee367b527e2a09
+508, 0xdecdd82920560b63
+509, 0x64dfc74fd7f2bfe
+510, 0x6ab0b966bc6fcb9b
+511, 0xeb0199bf8f8a3816
+512, 0x7d603f5a0fdf7616
+513, 0xbf0177f27b06e799
+514, 0x83a5a1dd75b536c0
+515, 0xf898601d81b9d989
+516, 0x264944efd59443dd
+517, 0x8e93bfdffb880aba
+518, 0x697561a56735dd59
+519, 0x4377f57af134b8cd
+520, 0xb84884431d02a53d
+521, 0xfcf3b5efbdf216c8
+522, 0xbca95d7a8ad81290
+523, 0x3320c204d5e92a49
+524, 0x5e19b0ec2072b07e
+525, 0x3ac2c56483ec19fd
+526, 0xbccad8ee0f613b5d
+527, 0xd351c964ab750837
+528, 0x4b46de746194625a
+529, 0xbcc0a7cbaca03293
+530, 0xe35955fded6f2276
+531, 0x21aef4fb23229559
+532, 0x38c67966f1aa2296
+533, 0x2313034e68aad3a6
+534, 0xe79c154be56b5576
+535, 0xe8313f229a85e811
+536, 0x32ce60d1f50fd321
+537, 0x47713272c46d00b
+538, 0x16c9165c6f10d24a
+539, 0x30e39109e3275951
+540, 0x885b243b1a057c75
+541, 0xea6743a2c6a384af
+542, 0x4a7270162f8329c8
+543, 0x6ecbc6ad90ade794
+544, 0x8f5e8dd3a37e94e0
+545, 0x91d2ad50e044c382
+546, 0x8b6bb0b7f6ac61db
+547, 0x324b36acdaab4457
+548, 0x59ed97721860509d
+549, 0xc45924166bfb2ea2
+550, 0x7cbb46bd01b1ca53
+551, 0xa41d17a5456d70f7
+552, 0x22d26eb275d0440f
+553, 0x74bc05ce1bb10c2e
+554, 0xd4ed1084eb81c707
+555, 0x75e936d690b1c4e9
+556, 0x94dca2299e381e0f
+557, 0x7f7ae722fe2f3642
+558, 0xa72d301ef5d62837
+559, 0x1bc5cde83663d558
+560, 0x36d21d07bf182d05
+561, 0x37bf7daa7282720b
+562, 0xa8f37c56dac3d1fe
+563, 0x8a973e5fdca1418a
+564, 0x3e4fa296626fc6eb
+565, 0xb00b0d0baa75d0a8
+566, 0x2bbf9c70cdf0f0b2
+567, 0x41a8ca894eb8dae5
+568, 0xfaf4d210bddc32d9
+569, 0x1e317a055a699e1f
+570, 0xc01d715dc83689b7
+571, 0x32008479d35b9d3f
+572, 0x16bfea67573f8517
+573, 0xdd1418e1ca46d5a5
+574, 0xb3f330c663a20f9a
+575, 0x5bd1c898e9611e78
+576, 0xf6df66445155ec97
+577, 0xc905ee3a15b83c9d
+578, 0x50797ef789745157
+579, 0x1330d937a4856523
+580, 0x1001c0e08524c59d
+581, 0x95b258cac211f178
+582, 0x2e61f6778ba53029
+583, 0x7e35c5afb3b67215
+584, 0x4a966942b4ce407e
+585, 0x63c0fa981400623d
+586, 0x2788e6c96c1826bb
+587, 0x1d58691c7e579526
+588, 0x554a15ef02ac25be
+589, 0x310310aa113cd278
+590, 0x932347c64ef37cfd
+591, 0x3480e6062a9de198
+592, 0x3df126e84fed6094
+593, 0xeb1b2d9f2f7faab4
+594, 0x79305ff41717170e
+595, 0xd16dd9d121ed79a6
+596, 0x380bf103a818f05c
+597, 0x6d4ead6c20945455
+598, 0x358c06a132638a3c
+599, 0x8a31c49306807c4f
+600, 0x8348dcc031129070
+601, 0xadf66bfd4278f38a
+602, 0xcd95d2350db96365
+603, 0x81d71916ebbefa43
+604, 0x1a0623944ba56e2c
+605, 0xd1bcefa9d4e7bfd3
+606, 0xdbdefc03acdec398
+607, 0xfde9fa4617ef7ddd
+608, 0xfb1e9e696648bb26
+609, 0xbf88b7580d5927e9
+610, 0x4da178dcc3a89aea
+611, 0x94db8b1d876087e4
+612, 0xecfcf60f47c79854
+613, 0x9ef7d0d251da35a7
+614, 0x453f774fa09a8d10
+615, 0x8c31c57925b239fd
+616, 0x8e580a43a3bff5ff
+617, 0x9af792c383b7395d
+618, 0x9df36c3bbcd3bf55
+619, 0x93579179eb304881
+620, 0x2502bfcd7d85a7fc
+621, 0x7145b93f7f91133c
+622, 0x24d943ff68afb6a2
+623, 0x7ed7322e9d26161e
+624, 0x98d58e67dc211d3f
+625, 0x606e6eda3d49e928
+626, 0x91ff5582f2e126bc
+627, 0x32c18cbe9f068fa1
+628, 0x158fb0b7b1cbb0f
+629, 0xb8efba4e9e18aa84
+630, 0x73042bf5836dae0e
+631, 0xb08db72716e1547a
+632, 0xa77c6291e0bc43cf
+633, 0xc32a216129c65832
+634, 0x9ba8c3a6e28320c3
+635, 0x68a860b0460f4d7a
+636, 0xb2d6acaad96ad2b8
+637, 0x7e99ec06a1b12969
+638, 0x4e73072434778be5
+639, 0x45c738380472436f
+640, 0xacc1dc0cb1671a1d
+641, 0xe2b3a601c8028dd2
+642, 0x4f9011640c0cb086
+643, 0xc6424d085d77f7d8
+644, 0x4be1e01ddc4931ab
+645, 0x7cc90d0d28c27c95
+646, 0x74769cbb87388666
+647, 0xd09b8c57ab2ab780
+648, 0x9e37e07f5b413afb
+649, 0xe2a4dfc86e985dd4
+650, 0xbcebd68950a62876
+651, 0xe61186758e286164
+652, 0x5be83633e0653215
+653, 0x60f5f3346f1e7a63
+654, 0x90be5b5bd3e71f3c
+655, 0xd873686587fbaf23
+656, 0x56a78bdda770ffb9
+657, 0x10ac45a16daa49f3
+658, 0xb8df2a1dd5781cc2
+659, 0x7b2ed0fc9abf7e9b
+660, 0xbea9373bd4d879ec
+661, 0x130c660f2edbf5b
+662, 0x5d3f614bbf3204f
+663, 0xf328a315e9d0b932
+664, 0x7cbe580281817508
+665, 0x3b7ae752ef5de9ea
+666, 0xd88a2f398c8e195d
+667, 0x2db535bba7ba7358
+668, 0x762e4bf7fe733a9e
+669, 0x126f629c46663b0
+670, 0x91bb6e238a5a9669
+671, 0xeea8827b9c3f2e5
+672, 0xe86738844c67fe4
+673, 0xed15fd801bb9d73f
+674, 0x157517cf2091af44
+675, 0xa73e89c3d7bbf546
+676, 0xb56f610a41176770
+677, 0xeb33707d25578bf6
+678, 0x1b89e1301a46663f
+679, 0x75ddc343b67f1ea7
+680, 0xe2da07af36f0448d
+681, 0xb5567854075a0f6
+682, 0x6247afc791977380
+683, 0x824b342ef7df201e
+684, 0xd72654ce78b69f06
+685, 0xa81b601c56d7cb9c
+686, 0x721c4b5d80932ead
+687, 0xc99bba379d154c88
+688, 0xb12e74cabfb084de
+689, 0x182d98bf2d14d5b6
+690, 0xabd6445ca6180320
+691, 0x61bd348533393374
+692, 0x8b24cce3636ee185
+693, 0x9d9092316dbb7960
+694, 0x46b005f6176cea5d
+695, 0xf07c167b80eeb610
+696, 0x589f0fa902170da5
+697, 0x96cb5756946a309c
+698, 0x8a8eaeb00cc65201
+699, 0xb283c55de49423be
+700, 0x67f5595dcba6dbb1
+701, 0xd9776bfbf6065931
+702, 0x6e10ca882deba83a
+703, 0x6102d62102809372
+704, 0xdfeeeb5a115e8703
+705, 0x9b2320c4d818be3e
+706, 0x9168936a8d01a485
+707, 0x22d3744fea4f78dc
+708, 0xd40b836aa128a062
+709, 0x6c61a41c6d65f12d
+710, 0x55730397d9510398
+711, 0x7dee61ad38acc6d9
+712, 0xda1912bf3de3e557
+713, 0xbfe6c019850006f3
+714, 0xe845fb0710682483
+715, 0xcdf60b34c368e5d7
+716, 0xd6e7dc0e6c3df1b1
+717, 0xfeb190e94f30088d
+718, 0x4476cfcd6c9bca02
+719, 0x2977673195da3490
+720, 0x96c568ec008e2df4
+721, 0x817d59faea6f872c
+722, 0x2bc4e7547b5e1381
+723, 0x25c7680da190b93f
+724, 0x2dd815c2e3716198
+725, 0x85bbefcc5b6d1f6d
+726, 0x5ec31ffbefc3056
+727, 0xc29d2756e13c1449
+728, 0x25b61ddfdeaa3182
+729, 0x2365b4967dc141de
+730, 0xe275f2a9be026689
+731, 0xf30d1c218692aff5
+732, 0xb48fe560af269c01
+733, 0x9852c4e3dfa37603
+734, 0xe5a1de23fcc3f727
+735, 0x22fdaf11989cd063
+736, 0xe397e17c8392a847
+737, 0x7529eaad7a530992
+738, 0x5f3f32fd3dfb3320
+739, 0xfc9f4b0bfb548db9
+740, 0x1471cf6df6e134ab
+741, 0x873db4bb386fc282
+742, 0xbc94c6a3780f79ba
+743, 0x4bd508d98988c251
+744, 0xd1a817a879c8923
+745, 0x12a350db356edaab
+746, 0xd3257e02fe6faddf
+747, 0xdc09eecdbc32c2b5
+748, 0xde18b15a13a8dc6
+749, 0x753c4c30f7c35e2e
+750, 0x596d3436a834d6a0
+751, 0xf3319db462c1b9c7
+752, 0xb73715d61ffdb26d
+753, 0x5330c9d08115e44
+754, 0xc008a119c220cfa9
+755, 0x1f624f431b83ed39
+756, 0x6d1130e066efd112
+757, 0xfd3eff082f54c839
+758, 0x1b31da85da96c5a0
+759, 0x849e94a219c2b71b
+760, 0xe1b772ea1fb31ec4
+761, 0x67db72a68f2ced9e
+762, 0x99426581623fba83
+763, 0x7a6b306ed67cb4dc
+764, 0xc18f42740fa62dd9
+765, 0xce90428779eeed7d
+766, 0x9d1c7db3d6c3491
+767, 0xb26a8c31ab6f277b
+768, 0xd31845885962e222
+769, 0x83aaeff5e24f551c
+770, 0x5a73fbc17f10d179
+771, 0x5cc19c3807d48a2f
+772, 0xc8e6f01324d0bf9e
+773, 0x404f95c06aacef62
+774, 0xfbd0e7a11580e337
+775, 0xe35a206927cad6e4
+776, 0x79a7b1b6c80142e5
+777, 0x81a28a97d7110959
+778, 0xa22d612df01a16b
+779, 0xbed9dbcaf3d82bd9
+780, 0xd3e5b22df6fcca95
+781, 0xcf4626d3739b65d2
+782, 0x3bea29bf8bcb3439
+783, 0x3e8f7021bb137dcc
+784, 0x2fdd4faa44a68574
+785, 0xbd830ac3f0be7750
+786, 0x7a3e6f39eb05d5c4
+787, 0xaf229fb1db175bc5
+788, 0x7295e47bfccfb76e
+789, 0x62695e99d0a25e7b
+790, 0x30cd8850c858838d
+791, 0xaff09ffcea838e89
+792, 0x4e9d0b99386dbf42
+793, 0x9eac0e6b0025bfb8
+794, 0x383465e3b1a6fffe
+795, 0x5b6c0c45aaf4ce5d
+796, 0xe5cfe9da80e4348e
+797, 0xb1157c89a7d97df
+798, 0x1c27501515138d47
+799, 0xd4f4a083e3d14728
+800, 0xdf69ff0a7982ab61
+801, 0xc376eafe88dc182e
+802, 0xf93ab7882723b2dd
+803, 0x89b8a08615a7aaf6
+804, 0x2b6cdf2f80adbdef
+805, 0x2d57a9420550aa14
+806, 0xe9c1ad378ee6612d
+807, 0xb48e3b9ca52568c9
+808, 0x9e67310a9b7ad7c2
+809, 0x24f74c637b7fd180
+810, 0x8956247efecfb1db
+811, 0xc0a17f81a8a93104
+812, 0xaa2226f0ff5ef2b9
+813, 0x6aac7d569a285253
+814, 0x642982be37a0a179
+815, 0x1da6f2b46c5eb14b
+816, 0x146eb12f17563cb7
+817, 0x490e0fe4d69695db
+818, 0x50f6bb32abf00166
+819, 0xc78be77c8e1a7b3f
+820, 0x130b147b093c659a
+821, 0x8a28c321e9df8c19
+822, 0xbd81ea9f26c58a93
+823, 0x786c73446361dc31
+824, 0xfeb7d2a60d500f73
+825, 0x84b0e0368a98bd73
+826, 0xc944c636fb4f2ad1
+827, 0x64dff6c2acc378b
+828, 0xe26a5b23e5f2bf96
+829, 0x86dee0cf9f52dedc
+830, 0x13f40d996945e7cb
+831, 0x9965d35d76866320
+832, 0x55169e779bc4403f
+833, 0x5453e9e5d6399943
+834, 0x7ae5cce348460939
+835, 0x206be2007941abff
+836, 0x59a1fc9441a2c060
+837, 0xd65e845fdc736883
+838, 0x2d9411da47dc596f
+839, 0x3f8bcba4fd0f03d
+840, 0x533895c1b19c6262
+841, 0x9cc38eac5006493
+842, 0x2244a1f903232422
+843, 0x8c7eba4b9893e04f
+844, 0x8b669e0537581368
+845, 0x48aa4ce1b62dea35
+846, 0x98a789136697266f
+847, 0xf087571d08796c39
+848, 0xeff986fba7345e0f
+849, 0xd0d667be7bb85237
+850, 0xe83dbf0bc699feb1
+851, 0x8501ff412116d9ae
+852, 0x4d2c06d690a13e80
+853, 0xf64b077cba13b5d0
+854, 0xb166fee2ada390fa
+855, 0x3bc475043c332873
+856, 0xe21b6d7da7e9ee13
+857, 0xac6c3264958b1f6b
+858, 0x701c1df185e6fddd
+859, 0xaf7e8501f7445559
+860, 0xe34e79719b3c2367
+861, 0xa75d03f5b049c044
+862, 0x7b1fed41fbb62155
+863, 0xdc98215140275e6a
+864, 0xb593660fe8bf00df
+865, 0x499f416dfea8a062
+866, 0x2463b217bffaf042
+867, 0xde955f615e68a961
+868, 0x9db7cab1b500249
+869, 0xc4e0c255193f8d3c
+870, 0x3a220f4068fe8189
+871, 0x310f311d1151affd
+872, 0x9d2723448ff8a1bc
+873, 0x219c5f555182f8ad
+874, 0xcc6a54b756154997
+875, 0xa9894b81e72d03b4
+876, 0x1c489f42758b4008
+877, 0xc57737e1fff628da
+878, 0x752e08a04dbb3654
+879, 0x397ef980659aeefe
+880, 0x6da11abffcbf51df
+881, 0xb28f6931d8425ccc
+882, 0xb2589acc6764a5a4
+883, 0x6e7caeb3edf4c9ae
+884, 0x3333bef1c33d3648
+885, 0x50b975012e7f0d58
+886, 0x4c24195a5576d9e5
+887, 0x5fb697e515523d4c
+888, 0x4c25e6146105725c
+889, 0xcade882dd4674db0
+890, 0xe0f1cba246c94df6
+891, 0xc7ccf728811bf9a2
+892, 0xce2b631b55492ed6
+893, 0x9ca2e1c4fd5080d1
+894, 0x5c99b44ca03cba57
+895, 0xc12a90a937b45e7b
+896, 0xd97f8d5d4c44db88
+897, 0x54077ccf8ba0193b
+898, 0xe1ce544f328b8d8d
+899, 0x8a322880b5237d01
+900, 0x286a178d86ff3d49
+901, 0x211a8e5021074880
+902, 0x3be20d7210e4a91
+903, 0xb7c35a62c4f646dc
+904, 0x2b409ad4e03b7290
+905, 0xac3087c5382e7e58
+906, 0xa3748972b982ce4a
+907, 0xb340ca0dcdd4fc46
+908, 0x92a567cc37525316
+909, 0x32ab0e108dd31e1a
+910, 0x9cc564c8306fe4d4
+911, 0x2f30238d788e4aa4
+912, 0x5d7b2d5a1cfb3ca6
+913, 0x3d7c7cfb5c3dac2a
+914, 0x68a2fcc7c90bc67c
+915, 0x93c931b07c7bcaaa
+916, 0xb07e858c5f6804fa
+917, 0xf34487568770d540
+918, 0x92d0c14ac66fc693
+919, 0x1df3edf3172dbe1f
+920, 0x99dd6452e5beb2a3
+921, 0xe38aa3644a74fde1
+922, 0xc049af84d1206652
+923, 0x45ac2398eaf40225
+924, 0xd12607b558ef0006
+925, 0x1e7381c46a70f619
+926, 0xdb7c30532160e472
+927, 0x73ef892949f375f6
+928, 0x19ffd06c4ab2173f
+929, 0x5d36078951fde0ab
+930, 0xa1dd5b24e3e82ebe
+931, 0xa007a426d0f94cb
+932, 0x927ab34a8d844365
+933, 0x8a3e93aae579f9c9
+934, 0xfab14d979a048f4f
+935, 0x91a360f46855dcf2
+936, 0x76466996b49f4705
+937, 0x12d4f323c1a88644
+938, 0x5505395519967856
+939, 0xfa64fc82da5d6486
+940, 0x1bd1dc97bd219e89
+941, 0xaf41e0011c68d69c
+942, 0xf1851e78d15d95a0
+943, 0xc00178a6f4449839
+944, 0xf74517746fee73d0
+945, 0x14e21fb6693e2dd5
+946, 0x30fe5c4d988342c4
+947, 0x9981d1554e52001c
+948, 0x164e36540569db94
+949, 0x711c12fa1f32de8d
+950, 0xe43201111f3e1990
+951, 0xd3f5395b84e4d93d
+952, 0x40319e5870e18ea
+953, 0x7a45fee8655d707f
+954, 0x3610639f0564fd3a
+955, 0xac97da399634ec25
+956, 0x5cc8615a764d8cee
+957, 0x82463c24e8b3e5a1
+958, 0x3af60e152b97a91d
+959, 0xefcaa0964723b3ff
+960, 0xd5979b8da2b0875b
+961, 0xd718909a9cfd5aef
+962, 0x985995c251b18b56
+963, 0x2c7c126f9a0eabe2
+964, 0xb4ebcd9ab305d7e1
+965, 0x28fd69e0a7bb4846
+966, 0x2af7b43ea9164e56
+967, 0x9f72bdc5fe1ec72b
+968, 0xf1a884206bb1559c
+969, 0x5caea3abafc00777
+970, 0x2e5901b394a13b22
+971, 0xdd4281ace415ef7b
+972, 0x1e421afa2c23a9ee
+973, 0x64942a448f2a61f7
+974, 0x32475573b78af5e0
+975, 0x348602ab7221
+976, 0xda1cf48b3c778ac9
+977, 0x202730803de016c
+978, 0x7f07500a97253303
+979, 0x912df89c5702453b
+980, 0x7a483f96506f7e2e
+981, 0xb0331694db0d3557
+982, 0x244b924fd11c49ac
+983, 0x5d1097770b6f4740
+984, 0xb227f8cb5f5ae045
+985, 0xc66e1b71c02fb86a
+986, 0xe08b547dbee66315
+987, 0x4e7e2986cce8bbff
+988, 0x96f7bfe16d59aa73
+989, 0x82f97f418750013e
+990, 0x1329bc356103905b
+991, 0x82183603b406408d
+992, 0x3818107e93ac9397
+993, 0x3b477193a3f61669
+994, 0xf4e443832f9e886f
+995, 0x466becfe7debd82c
+996, 0xe32937bc5daaf7c7
+997, 0x90bd4530b0e0574a
+998, 0xb78055db48f56255
+999, 0x78829570b3775e14
diff --git a/numpy/random/tests/data/threefry-testset-1.csv b/numpy/random/tests/data/threefry-testset-1.csv
new file mode 100644
index 000000000..ddfa736dc
--- /dev/null
+++ b/numpy/random/tests/data/threefry-testset-1.csv
@@ -0,0 +1,1001 @@
+seed, 0xdeadbeaf
+0, 0x8dfd999efc587d2e
+1, 0x3bf6c47ed872597f
+2, 0xd82537743662be19
+3, 0x46103c1408067361
+4, 0x7346b65b404eb9fe
+5, 0x4b83687af205cda8
+6, 0xc9cccc1fc1c330
+7, 0xf1998771158a2109
+8, 0xda5dc10ad259dbda
+9, 0x4646e487520d8e1
+10, 0x159fc0e3e691e0af
+11, 0xe2776a537d1a14db
+12, 0xc1c7a9c84e1ebeae
+13, 0x884ac2384b510f2
+14, 0x4884b09c9a60131
+15, 0xb13a1cda0d508af4
+16, 0xc3d21a2f212bfce4
+17, 0xa3b801d11d523597
+18, 0x1032f052626e5c62
+19, 0xd3b97f4372f6b7d8
+20, 0xd2982ca1c2af2372
+21, 0x13be3d71202f619
+22, 0xdace9f84ef1ddfa6
+23, 0x111bf9b9cd36c31a
+24, 0x1ccc5e5be7281a26
+25, 0xa4cd1aa57030bafd
+26, 0x99e30fc07a8990a3
+27, 0x9bfa5257d8e64ba2
+28, 0xfab6cdc7f1ed5221
+29, 0x85a4cf41ee744f97
+30, 0x1bfa09917b2906ae
+31, 0xda161ec1288b8909
+32, 0x6b1b3ca2bd91573
+33, 0xcef3a71775de82e9
+34, 0xe8ca72781abf1c22
+35, 0x5b8b673b060631ad
+36, 0x6658737a84dfe2a7
+37, 0x65a2254b602bb09f
+38, 0x5ee6bfeadda0b432
+39, 0x8f3e8af494aeb36f
+40, 0xd1c29d016aa72890
+41, 0xfd96891840f0e51d
+42, 0x6103cebcf8398a46
+43, 0x7d899055702823a0
+44, 0xf9597bb3dce6d7e0
+45, 0x85b3bf105f26219
+46, 0xedfe4b32a28e4386
+47, 0x74f2415ce2908181
+48, 0x7de6c2f16372ca16
+49, 0xe2b29d517e17feb5
+50, 0x30d7ffc292038441
+51, 0xad4522ce80cf4c1b
+52, 0xa9c79bfa1f31b5d
+53, 0xc2f17eaf6c6fb057
+54, 0x27938c6a95a6663b
+55, 0x239db1ec714acc17
+56, 0x8df60daf4949f4bd
+57, 0xb2f6b97d127209d4
+58, 0xad58961f74c8596b
+59, 0x6e920c60d6460627
+60, 0xc3839f29e9ce8be0
+61, 0x339161e608237aa3
+62, 0xf148b8d4fef7386d
+63, 0x2cf8bd6438b2a52
+64, 0xa1e432e4a618e741
+65, 0x56e1e56517151ed5
+66, 0x61e528b5a3f6d4ce
+67, 0xcddea3f49d6ded23
+68, 0xf966618d29452959
+69, 0x5d4fb65eb30e8f28
+70, 0x4a913ea38620fee5
+71, 0xa00f4c5528a3b760
+72, 0x1ac5a2ce0486d8ab
+73, 0x521ca18c998b8d5
+74, 0xb0779142f4d0bd69
+75, 0x22f054d9131f1fe8
+76, 0x8c45b6c48016430d
+77, 0xbefe70d6c6f8727e
+78, 0xc581436cc4c2c0ea
+79, 0x5864d0268e18ee15
+80, 0xca47fe47d22aa5e6
+81, 0xdffdbbc0db7ad425
+82, 0x2ae423bd73de5d15
+83, 0xb83b4651838308bc
+84, 0x16fa5f72b53c5d6
+85, 0xa0b6cb353724ac01
+86, 0x64d4dc2db97a7d36
+87, 0x79ccd3dd98b33cdb
+88, 0xadda2d6132e73ebe
+89, 0x7d1a82eff9dba6ce
+90, 0xc27defdc4f9c42a7
+91, 0xe12bcf2300cc0585
+92, 0xdbc65c0ee8511e31
+93, 0xaa9a1edff55c22cc
+94, 0xc007f355f38dc50c
+95, 0x4fbed1aca4bf4222
+96, 0xf137a501255f8852
+97, 0x416ce22d2c6b8e4d
+98, 0x5f9fc6ca7a7e9000
+99, 0x9133f67a9222cbf
+100, 0xb5fad01321365bfe
+101, 0xe3e971e5481249d1
+102, 0xb2950204c847bc0a
+103, 0x7ea97815ffa7d45a
+104, 0x482c5be26c8bdf3b
+105, 0xe42e7e3114197d0a
+106, 0x3b74ae3e10f20ae7
+107, 0x92a5e6eca6ce4c38
+108, 0x951ef146ac76378
+109, 0x282f71a81cf08455
+110, 0x3f267412ad1483a5
+111, 0xa5b91846efa301ef
+112, 0xaa31cdcfd08603b5
+113, 0x2e16b10730082c4f
+114, 0xbdf14631f750e96
+115, 0xd008abe07ede91b6
+116, 0x994ee56c08ff60bd
+117, 0x53f0ce17c7c350b9
+118, 0x4c6f01008b3f93
+119, 0x575ee5e7fa184714
+120, 0x83ef0302e14bdc0d
+121, 0x5bf2a34323954dab
+122, 0xb489e8c4c51a8683
+123, 0x4c9e9801a6acaa07
+124, 0xe9d2e19c20612fe0
+125, 0x2ee2ca0a4d83aa46
+126, 0x19d3a90895d7773c
+127, 0x4130367c3abf9b1a
+128, 0x1163968e394a67a1
+129, 0x67ffcbbfe478276c
+130, 0xd57b578ec019ce0c
+131, 0xb455156a987ea010
+132, 0xa9b429ce5f337432
+133, 0xff84cf0f673cc4c4
+134, 0xf034b32b302d0953
+135, 0x9bb6bc59375bbf53
+136, 0x44a2d4bc278da710
+137, 0x78023c9fc08e6247
+138, 0x6b27a1397bd5d278
+139, 0x193758c805b28105
+140, 0x28b88044af4b5313
+141, 0xdf32108c3da9cbc9
+142, 0x6cdb5ffbc5b589e1
+143, 0x702d9691e509de76
+144, 0x405cba179f3db3b5
+145, 0x73d44e0be3ac8048
+146, 0xf9d578eed861f37d
+147, 0x9d04541aaacab238
+148, 0xce4507880b30adca
+149, 0xaec02613164bec9a
+150, 0x346180904e9beade
+151, 0x624adb9e18bf4dca
+152, 0x3ad2ab92b1f11b23
+153, 0x7d5ae064eee4f228
+154, 0x4e2bb6e3851953c2
+155, 0x55bedadf90ddfa04
+156, 0x4f9422b9142c837b
+157, 0xeb5592fb0a763ead
+158, 0x3ecb85424422c74a
+159, 0x119bbfa61eb2222d
+160, 0x6505a8c9e46616bf
+161, 0x57bb55ae533b24c5
+162, 0xd6cee34b85233f67
+163, 0x7ea146f8a6edccf3
+164, 0x76615fab897424c1
+165, 0x6d79fe83053e2769
+166, 0xa2759466a39a899d
+167, 0xc71216f7edc5fa52
+168, 0xbad1fec86d6684f6
+169, 0xd461ed7882597a5b
+170, 0xa437d1518e84a43d
+171, 0x5f7d08235e202553
+172, 0xdd87bf84dd2ee070
+173, 0xf2be8b7cda72f89d
+174, 0xb221c206f95bb237
+175, 0xbf0643fe5b908171
+176, 0x6bf7c1606a106580
+177, 0xdb356bbb10ea4eda
+178, 0xe237835dd0d4690
+179, 0xe6c2fff624891ed0
+180, 0xe08936b04987ce88
+181, 0x2837dbe9582a2658
+182, 0x51d176aba32aba6b
+183, 0x5e84cf73553b7d65
+184, 0x65ae1e2bfd16072a
+185, 0xf1e5ba1a331380bc
+186, 0xd635cc846b72af5
+187, 0x5b0ebda48c952d27
+188, 0x5e05122799559b71
+189, 0x58636876eda68987
+190, 0xbd7af40a48bec96e
+191, 0x85c640b51a9f45f1
+192, 0x204a037b8e6e312c
+193, 0x961e7967c267be6f
+194, 0xa638d40cdc30c59c
+195, 0x5a39715f059bdc4d
+196, 0x672b41e8c97af455
+197, 0xd30fed911bba090f
+198, 0x491a830b50c133b5
+199, 0xa17c651d10ef18d4
+200, 0x18c5ed30299ca860
+201, 0x422b896bb244bf22
+202, 0xc5f46ffd55ef2588
+203, 0x709cc6441b029ef2
+204, 0xf253dfa120c336c1
+205, 0xecaa82e7fbe74f55
+206, 0x2fd810efb17f6736
+207, 0xe7a25ab84fb25ed2
+208, 0xaf7193b55b4f2c68
+209, 0x2a759a4ee4a1ce66
+210, 0x16996f2d902284bb
+211, 0x87d8c6d1879f76fd
+212, 0xdc966392468278dc
+213, 0xe41e4051d267adfe
+214, 0x381a17ee5c0be0bf
+215, 0x92f27f7e4d3316a8
+216, 0xcfc791e85c47d026
+217, 0xd3fdbf29fc4b3b9a
+218, 0x42e5919e80dbe10
+219, 0xab84a06c93add70a
+220, 0x4f09d5438a9cf6ed
+221, 0x60e5a77f3e81cc62
+222, 0x86e0c8b80336e771
+223, 0x899c3c4372b18cd8
+224, 0x8e4b3213708a89e1
+225, 0x265ed6061b84ce2
+226, 0x80770e2169b55299
+227, 0x39fccaaf318d18b2
+228, 0xf1b996ca0a6b8dcb
+229, 0x2d5a2497533e1bbf
+230, 0x82e8bdbea5fd4825
+231, 0x96beae4bc404d6a3
+232, 0x6bd730a492452ec8
+233, 0xb64ebc3e1342d159
+234, 0xb1632475806f1236
+235, 0x2e753cfda372774b
+236, 0xa071f3cfac5af1c2
+237, 0x2cf0268115fca199
+238, 0x79255186612c0e7b
+239, 0x2ddda40d56bcea5d
+240, 0xcae06b8e382dc2f3
+241, 0x4c4eeb5a29713cb9
+242, 0x9094b57b8a7d48e0
+243, 0xc770e33c1203b229
+244, 0x86d82971c2c93900
+245, 0x890e721300b7c4d3
+246, 0x3060aab5f8cac918
+247, 0xbe1eb72ed892942e
+248, 0x7c9dd3cb08d8b96c
+249, 0x5fd00ae5885d5de9
+250, 0x4417cce0c28a8c3f
+251, 0x43cd3a2dc30b89de
+252, 0xc2cb18532d9530fe
+253, 0x28abfd68d23173ec
+254, 0xc4d76303811fce07
+255, 0x59bd12a60ec03a
+256, 0x34d7ccec03c71605
+257, 0x8b75d9264501f015
+258, 0x7cd57fab83c4a0a0
+259, 0x8da871dc3cbc9eab
+260, 0xb584498a027618eb
+261, 0xc6e40e951710b610
+262, 0x41178da78714af7e
+263, 0xd23bf6c5d4f72956
+264, 0x96a7e56e7cd445aa
+265, 0x9a0c33f1026bc110
+266, 0xa9e827283fabfb28
+267, 0xc5db920653ca6532
+268, 0x7d7c2798440bf4fa
+269, 0x29c67ba6461f747a
+270, 0xb8714cd0b123302c
+271, 0xd3dbfaad42155417
+272, 0xbf7a42afb38e35b2
+273, 0xc68987e460f75e2b
+274, 0xc1870d0d8b3749d1
+275, 0xedd865f6c4742810
+276, 0x97257a657fb3cabe
+277, 0x7481e43145a8d41
+278, 0xd5bf38b5e9dafc7f
+279, 0xd79afc7b1005e7a
+280, 0x6ad40d65e9b5a5ad
+281, 0x65075c2e32fff49d
+282, 0xd1be9510a7f3b969
+283, 0xd07acc1e3f6eb257
+284, 0x41dfff9ffb08776b
+285, 0x2521ba1b48ef458c
+286, 0x178fdba8b65a61c5
+287, 0xf72679d974b82e5b
+288, 0x723c29de610d0b12
+289, 0x84726f3e749c0c1
+290, 0x7316136529dbbb9d
+291, 0x62d5c6fcfdd7b104
+292, 0x5ed0a981f49819f
+293, 0xedc777d4f5085908
+294, 0xd1758061e06720f3
+295, 0xccdf37b1a089e664
+296, 0x4c7eccdfcc38b22e
+297, 0x3af579b044760f54
+298, 0x4ebb096a5a14053d
+299, 0xf84f1e6aea913534
+300, 0xab8187a201171f
+301, 0x2fdd889a5b23ab70
+302, 0xae0894fe8c9356ce
+303, 0x3c98be30e5ac171f
+304, 0x566953af2a7a305d
+305, 0xb15bb69ebd40f8bf
+306, 0xeefca1ec57e47780
+307, 0x88e3d9a3377cd873
+308, 0x39ed63117f8e1ba5
+309, 0xeee20fabef374e5f
+310, 0x836c24fbfe91a231
+311, 0x9de79447cb2301de
+312, 0x8e3028226501f563
+313, 0xede195f88a8976fe
+314, 0xfa67e7f210a9ea65
+315, 0x33a9286c9cc0519c
+316, 0xf293cfc77d255e0
+317, 0xcfd8e6a385302439
+318, 0xf801e78f6bad9935
+319, 0x831bb783f70bac85
+320, 0xb85b9b1e1dcdf06
+321, 0xa41009e83579efac
+322, 0x9095c71cf018e4d
+323, 0x2ec789714277148c
+324, 0x46067636a9ed2f33
+325, 0xd9385c2b49db3d95
+326, 0x69102374c36463aa
+327, 0x94dec24132bb3042
+328, 0x81c5ff32132d8a4b
+329, 0xa9cf7ef654a14c5c
+330, 0xcea3e704414db905
+331, 0x9b8ad73d3cecbe73
+332, 0x59c3613f1f59c91f
+333, 0x96becdd5d3d6eb7e
+334, 0xe532174a0e32c691
+335, 0x52f9ef72eb3a0e0
+336, 0xc47812f381b1034d
+337, 0x112ff07cbc1d95d7
+338, 0x8af49fc2e11d14e9
+339, 0x5f0bb0c8e6d38f37
+340, 0x5c92bc8be957afbd
+341, 0xe8f175d0f89fd52c
+342, 0x76223aa3b45638b3
+343, 0x3e68dc64b3402203
+344, 0x7a1da1d307e31444
+345, 0xd0eb8f54e2fab68c
+346, 0x44182e518700331f
+347, 0xf149093ac30a395c
+348, 0xfd23f8f75c25fcfb
+349, 0xfcf727ca90f9e4b7
+350, 0x85dc5c47fd81b61d
+351, 0x72b726cf22d2f20e
+352, 0x3f57ccd8f6a33bce
+353, 0xe363ae312c97ec06
+354, 0xfde8b0a33423ee87
+355, 0xe8c89d34bb501e9d
+356, 0xbd4d8774ebaf9046
+357, 0x40333dcde4e889d0
+358, 0x5c31d5695aaf7a18
+359, 0xc168172eafb6021b
+360, 0x1bed01cec3613e8d
+361, 0xdeb623f4effcfd6
+362, 0xd02f73c698f24935
+363, 0xbae9cb97df30d4b
+364, 0x2c8dfe769edc25ee
+365, 0x768041adc56396be
+366, 0xf11f31e14bcc8f86
+367, 0x1cc1ac84b5a5eef8
+368, 0x7cd911d41054b0f8
+369, 0x60228e0c35106ce9
+370, 0xa92ac07cfd218b7a
+371, 0x6e0ce56984fd6817
+372, 0x780b1c87423fef3f
+373, 0x677be089b5bd8fd9
+374, 0x2454954f7e5c8c0d
+375, 0xea1d3e8e67934975
+376, 0xd0199f2ad1c5b0bc
+377, 0xa7961b7893a67372
+378, 0x28517fd857003446
+379, 0x69cfc7298d4f2aab
+380, 0x14e673667c3a9c31
+381, 0x3d2326c751b57454
+382, 0x323f62bc000f68f6
+383, 0x58c1b8561f61d24
+384, 0xf4cb934358649f62
+385, 0xa4268dd0327460a4
+386, 0x922dcda4b4062a54
+387, 0xe1c77cc9775004a5
+388, 0x4d6648be23d1aae3
+389, 0x36e66b76d509f22f
+390, 0x98a79de81ada9683
+391, 0x911308910ad0d0e6
+392, 0xa78a75232eb9c534
+393, 0xd1620acff1293f3b
+394, 0xc2564f1312d27a65
+395, 0x70d5a4d369a56e95
+396, 0xa27a741994153da7
+397, 0x3fd84f4095c66967
+398, 0x8370c9ea207fa4dc
+399, 0xffef37922d7c15d3
+400, 0x10bc39f6a7575b21
+401, 0x6ae92a96b97e1f1f
+402, 0x8adfba7ab6ca7a72
+403, 0xdf1b40629ce3a3b
+404, 0x55d0451d15de716f
+405, 0x2bd54462ff147e0
+406, 0x676723dc7af24d1c
+407, 0xc3a7f70b34988a83
+408, 0xe716a0967a8c69d6
+409, 0xaf124e06fc7cac59
+410, 0x7951c1b7294d532a
+411, 0x543e87364c521abc
+412, 0xff5c44c50d4ee584
+413, 0x4a20724584833ef2
+414, 0xf605912a8c86b52e
+415, 0x58e76b9dfd4da8db
+416, 0x2279cf8b4a4f8894
+417, 0x99e4535e58af23e3
+418, 0x98b357e92d197aec
+419, 0xb665faf7ec3c5892
+420, 0x74ff68056822f96c
+421, 0x2443b541f675a9fd
+422, 0x2ddb1042d52c00ae
+423, 0x53bce4d472853bbd
+424, 0xddd12064af825de
+425, 0xd9e451ebb7871b0b
+426, 0x284e8b62b5140d39
+427, 0x392f6f741ec18b5c
+428, 0x53c1471d27c62d28
+429, 0x957c668aaa12dcab
+430, 0x905899dcc9c8d748
+431, 0x85b9cdbb0195492
+432, 0x3285475338298b0
+433, 0x362aec5454354816
+434, 0xaffcafd1179a163c
+435, 0xe7303efbbc4f41fc
+436, 0xe5bef7dc443e92f4
+437, 0xc30a00527a65fcad
+438, 0x10f35ee768a411c5
+439, 0x46ab523cfd6f019f
+440, 0xf96997ee80420b3c
+441, 0xd6bd882bc6334bce
+442, 0xce8082585fcccb74
+443, 0x10a585df3e216780
+444, 0x8bef43483e7359bb
+445, 0xb88fc9f0de92ebab
+446, 0x8f9f9ec7e1bcdc7f
+447, 0xec0da8b08dbf8ab7
+448, 0x8967d7116f0ca59b
+449, 0x3ec612e1c87c23ff
+450, 0x5f4c5e66476f3c37
+451, 0x536d0ddad6830a22
+452, 0xce05b606110b2ff2
+453, 0xbc06b0392b8db2f4
+454, 0x109feccc811d2237
+455, 0x1c6d58cbd3717d5e
+456, 0x4bf990f210d7046
+457, 0x98c0e58f2e655da2
+458, 0xe71155da62d7207f
+459, 0xe619955157476acd
+460, 0x5484ce353c85962d
+461, 0x4f30e140971d815e
+462, 0x1aee57fec03675c1
+463, 0x9d6ac96b29e5236d
+464, 0xa8bc59565b8d58f9
+465, 0x888f185056d1ef52
+466, 0x32bf6f97834d5f3e
+467, 0x4fda3ca53a0aad5e
+468, 0xb06670f7d65dc538
+469, 0x3394e29fd0a067d1
+470, 0x29f7c702dcaa4d6b
+471, 0xafc0eb498bafddbe
+472, 0x5002c13e14be570
+473, 0x11b62a54a56e7468
+474, 0x15ae967503c5b445
+475, 0xa1282117755e25e4
+476, 0x247ae0993e30d491
+477, 0x328f519e2974c09d
+478, 0x963e0c8c57e3a4e1
+479, 0xfd2d1a916eb9def2
+480, 0xa4625165c4cd23b6
+481, 0x935663b351deb205
+482, 0x4ec13ee6fd28c2ce
+483, 0x57365950d55bcfeb
+484, 0x36d56e4c073cb9a2
+485, 0xa3deb42d6419e3c7
+486, 0xc0a6b68eadab9a81
+487, 0xf99a94679e32a1e5
+488, 0xc42d64e664eb0375
+489, 0x323de13c4da53f9e
+490, 0x548e4376950c3229
+491, 0x5d53452624beda53
+492, 0xdb8dbdc4d06fcbde
+493, 0xcfae0fedb5744805
+494, 0x8d093170690f3ac5
+495, 0x31ad2ff1c80c20ac
+496, 0x40c7570d7660805e
+497, 0xdfc383cd341cc5fe
+498, 0xa571fa523e56de7e
+499, 0x5fe751124076e6aa
+500, 0x6696c91142c1a338
+501, 0x5c2295e731cc37e4
+502, 0xea4759143aeafa7f
+503, 0xf51103c2360f23d8
+504, 0x58a0e754c23434a0
+505, 0xc81291121fdac698
+506, 0x8679b3dc92d444dd
+507, 0x9ec6662d4aecb616
+508, 0xb508daa350249f07
+509, 0xdaf489538ed15145
+510, 0xcb6bd65b1c81a90c
+511, 0x7f5492214c7c11e8
+512, 0x875effe96d081ca9
+513, 0x1e35d4b75f19369
+514, 0x49029232ba45725b
+515, 0xa73202231bebe958
+516, 0x8011e084a420d3fa
+517, 0xe7ff845074367c35
+518, 0x3a9e9ddb2ff812c
+519, 0x6f5e47f4aa71a356
+520, 0x91e5a3a77e5b008c
+521, 0xad173c173829519f
+522, 0xadf0a51b9dfe9e97
+523, 0xa8fb30c571be5e92
+524, 0xb78e79d25ff80064
+525, 0x120eeaa9accedc7c
+526, 0x81020045a1ff2669
+527, 0x66a50f790048fefc
+528, 0x933c1efb74bbabfd
+529, 0xc5fc20f210302719
+530, 0x8151dec3094fabde
+531, 0xd2213b923bf407aa
+532, 0x78da0fc0b44771eb
+533, 0xd3a628d7eaf1f5d0
+534, 0xf7e444d35eaaaea4
+535, 0x2e5a8469332422c0
+536, 0xc4e9e4166203bdc0
+537, 0x68b11509577357cc
+538, 0x1c22ba556358f1a5
+539, 0x1130c889b5c71f31
+540, 0x68fd0def61e6a4d3
+541, 0xd91797bb9243ba7e
+542, 0xa2230c8c22e607b4
+543, 0x777331fadde75233
+544, 0x5a10baebd665287c
+545, 0xc6e37c206f8ef53f
+546, 0x2153e16620a7a26f
+547, 0x7c044870163ebd66
+548, 0x2a78dbc7b40026b5
+549, 0xe1b372326f13f738
+550, 0x1bd9ed17eb120bf8
+551, 0xd69aa5ce828d6f6a
+552, 0xedb21795bc2fe078
+553, 0x9424cee925d04cb0
+554, 0x1487a67127236306
+555, 0xbb04e7bc49c9e892
+556, 0x7d2cb1fef10eb638
+557, 0xb2165be14331dfee
+558, 0x608b006694436407
+559, 0xde51a803f31ecf58
+560, 0x2baad9e91021165
+561, 0xc5fdebb7bfe058d6
+562, 0x7d70f942899e39d0
+563, 0x6125c0830f211474
+564, 0x2b63c71b5e2257b0
+565, 0x38162d3452ce5a43
+566, 0x47d92f8500ecfe89
+567, 0xb4b0e8e986835907
+568, 0x64024e226440fdd3
+569, 0xef14e5e470056074
+570, 0xbd98e6483f249d13
+571, 0xb772dcbc1a4c59f3
+572, 0x39f88aee50df9b
+573, 0xe1284ee3b725f8bc
+574, 0x30b997b194c75fe4
+575, 0xcb8830869e416d6d
+576, 0x96dda63deae7dd5f
+577, 0x250cbc3004548474
+578, 0xd386e14eb6612f48
+579, 0x516613a018bc41ec
+580, 0x3d38173562501913
+581, 0x8f95bbd2fe704484
+582, 0xeea5bc9616a584ec
+583, 0x35a6ab8de8843dac
+584, 0x9df0a94962efbd1
+585, 0xfdb0bd56c87735c2
+586, 0x8cfc1e372a8368f5
+587, 0x8b23d5fd3b5591d5
+588, 0xa67e55c12bf454d5
+589, 0xc1de05db8c87c9a7
+590, 0xc922075e71b9a176
+591, 0xb8411ab83c539350
+592, 0x6e3e5390e04bf51f
+593, 0x265f5f4efd50c24b
+594, 0xda4a0b190ed7e4bb
+595, 0xe3b9badfb5f149f1
+596, 0x96b3c82ae413d007
+597, 0x6f0ad7739a6c754a
+598, 0x8356ae17125221d
+599, 0x7f54dbfd1bed2149
+600, 0x1db3446564c48acf
+601, 0xeab66293c35e8bb3
+602, 0xec71de5e82111496
+603, 0x307d1ffb851f3ea3
+604, 0xe7763576290aa70a
+605, 0xb54df18f36ec2901
+606, 0x1274c4c6b71070dc
+607, 0xd5427bfaa1046f0
+608, 0x779d99339f644b2f
+609, 0x408c3b4b6a634b96
+610, 0x1735ee7f87bb6851
+611, 0xa5780777c5f4d916
+612, 0x5bf9f4d091ee8ac
+613, 0x72a16b375faacbed
+614, 0x1cbcdedec43afe95
+615, 0x969f6bb71211f0d6
+616, 0x16205de04f90e353
+617, 0x3d8383b3ebca6fb0
+618, 0x10fdeba49ed28dc7
+619, 0x7db0d19d648a705b
+620, 0x58e3c21bdcabf3d
+621, 0x62a3082250cb2532
+622, 0xb253b1030f0b10ee
+623, 0x83050c560043946
+624, 0xde988add6676546
+625, 0x40ff1d99d7afa3e5
+626, 0x2949dcd8f797c0d0
+627, 0x85b3588ea7d06109
+628, 0xe6158241a7818a08
+629, 0x874c0e4d8f133e8a
+630, 0x802ef6fade0787ff
+631, 0xc8f4c96631fd13bd
+632, 0x1cc53ceabaae0621
+633, 0xa3a8215bac5844d0
+634, 0x3e9a46365495fca9
+635, 0x5b1a8b67d0cfff39
+636, 0xa4c00a256a7528d8
+637, 0xdb0dcabfeec2f50c
+638, 0xb4b11e407e0ce53d
+639, 0xf0290a216960acb5
+640, 0x647c256bc27149c1
+641, 0xa4c65fa3a1b3a384
+642, 0xcfc3a91aabff01f5
+643, 0x56af49b0be94e98d
+644, 0x78192db16ba970bf
+645, 0x8be6ab828ca60453
+646, 0xaec8783f7b08389f
+647, 0xbf60b1a0a05822e9
+648, 0x773dcad583ad616a
+649, 0x66c7c2accfe05b5e
+650, 0xeaf428e3f8a86013
+651, 0xbafafbbea503ca83
+652, 0x12fbfe395a53b22
+653, 0x5b0803a9835dc747
+654, 0x6c104a7da8b0bb27
+655, 0xa8b88e467c4c4264
+656, 0xaf921baa5bf05a3b
+657, 0x65ba0568bee94c6f
+658, 0x20e4f7d26ae8126b
+659, 0x1a21cdcb32a11571
+660, 0xb54cc85ddabf7169
+661, 0x7a96f253742c7ad
+662, 0x6232ed42c7776d82
+663, 0x28617c73281c3332
+664, 0xdeb63b98b7f96fc0
+665, 0xa99b062863e06102
+666, 0xebf044bcefed86f0
+667, 0x6e3c394a7dcf0654
+668, 0xa8010615532d4185
+669, 0x7a848c300193a6c0
+670, 0x24cd4460125dc3ac
+671, 0xcb7855b33cca6b82
+672, 0xcec13cf78f398d29
+673, 0x8ad170d6a9b257dd
+674, 0x974e175bcd30d07d
+675, 0xd354ce50f8f40865
+676, 0x4b28bba40a25dde4
+677, 0x6e7e9d53b8842846
+678, 0xa1a7effae10190df
+679, 0xd04d564e0c0df5d5
+680, 0xffde7841dc21b687
+681, 0x9b1860198d2e41aa
+682, 0x24a7d92cbcd7782d
+683, 0xe87352efade1fe66
+684, 0x5f302e85b504b68f
+685, 0xee93d343f09d8749
+686, 0xbfd683a06d5944ca
+687, 0x325743a5a7dc38c7
+688, 0x7e96fe56f6884304
+689, 0x9bee81fb0adafed4
+690, 0x35e5b7dabf13f87f
+691, 0xecb4fe689d3f2d62
+692, 0xc98df0a573051cca
+693, 0x31344816b051aba
+694, 0x6b74db489de2aeac
+695, 0xbae6b717869cd684
+696, 0x9dbd5b6a5263c332
+697, 0xd2a84a6af9dd66dd
+698, 0x6ec0ed649d6c0423
+699, 0x4fb425d69c495aa6
+700, 0x5f3c4bb82c849352
+701, 0xf936695a6db83ecf
+702, 0x1850bca22a80a0e5
+703, 0xd682f6ac9f78d35f
+704, 0x739ed6e0627599b8
+705, 0x2d1c3113339984bc
+706, 0x1677a16b08764c69
+707, 0x1a46fe6b943eb342
+708, 0x45bc46da8e1ae218
+709, 0x6b899e934ca545d3
+710, 0xa49c7d04a14f01a
+711, 0xf6cc946f76aee8f9
+712, 0xd57765ce52bc2626
+713, 0x9d5a611be45e54f8
+714, 0xc4e943fd1d93c8e8
+715, 0xf8bf900e053ae678
+716, 0x35fd93a2d3ca3ad0
+717, 0x28da11b273ad9626
+718, 0x4046bf1292aa4736
+719, 0xad2edd82a440e376
+720, 0x2d2e469cc5815e02
+721, 0x2bbdb981bd3477e1
+722, 0xf7e1ab492ae78b50
+723, 0xd8e8a2f1deb35bd3
+724, 0x38648d4e5ef1f775
+725, 0x66db82d34d00b6f
+726, 0x29d9f8ee57bc77b0
+727, 0xdbd37997c9496231
+728, 0x99da76ed64137b55
+729, 0x41e94018a92a92af
+730, 0xe9444b859466bc63
+731, 0x139ea8ec0363ec81
+732, 0xe5573db463b521eb
+733, 0x91ee2c97612ff6ab
+734, 0x17038e62d8d5547e
+735, 0xdae84fda26485133
+736, 0xf32ca23f5fb0a2d9
+737, 0x874a456ee5fb95c2
+738, 0xdd0e839b975e3475
+739, 0x1d45382adaf65c68
+740, 0xe98fb57275e4f06b
+741, 0x5680ec280f703935
+742, 0xeddec081cf938ff4
+743, 0xf6e156698ddc7f3f
+744, 0x5653fb5f9493628d
+745, 0x31128e4f1bb7abbc
+746, 0x966392eb3ab3d294
+747, 0xc18f506c9bd5727f
+748, 0x33f3861681488c3
+749, 0x88eea94d91f3ec4f
+750, 0xc07df01a897cfcbe
+751, 0x1273a8b06bb1a271
+752, 0x92eceeb94ee16b54
+753, 0x2372a2660388f673
+754, 0x12f0f9c80ae16123
+755, 0x192880a152ad8fd3
+756, 0x67ddde771ec9e527
+757, 0x29ef5b708626c4fa
+758, 0xdf65824bc7e2f5d1
+759, 0xed186a843266c66d
+760, 0x82bcae004f3c0011
+761, 0x3a00ac4e2aa8f1b8
+762, 0x14542fa617647e91
+763, 0xab833973b418a788
+764, 0xfff24c07ee1e1a8e
+765, 0xc9483de3fa539f39
+766, 0x3ac2fe43b2865dd0
+767, 0x3fa95781cd250f59
+768, 0x306e75a4e686b37d
+769, 0x6590018fe7123137
+770, 0x29fa6de7fe953978
+771, 0x235a7778eb3defcb
+772, 0x4866fd1cbb1de581
+773, 0x66294fb38c3a4d1b
+774, 0x2eba0e0b6a16a3a
+775, 0xc416b8fce537f10e
+776, 0x11b40b753610cf
+777, 0xa800cb9afe30a55d
+778, 0xc7843d545c02d7ae
+779, 0x19d74191419fd649
+780, 0xed8d718b6f8c05bf
+781, 0x321b3469a3b9f8dc
+782, 0x558799f6b55c0ae0
+783, 0xb289b9140c769381
+784, 0xc96bb650d7a5d3e0
+785, 0xc2e92e33b8559b77
+786, 0xf4f5f6ae13188205
+787, 0x2ee80f197ec22d18
+788, 0x6d87c2241c3e6d63
+789, 0xd145a7a0a2e7b011
+790, 0xc62cd586690015a0
+791, 0x9f58724c6bb22eb5
+792, 0x1f4d76cccba65f65
+793, 0x2c8ef48d0ed3f00a
+794, 0x4100357f24318944
+795, 0x99f50ea3b1e806b7
+796, 0x80b0b55abef2e2ba
+797, 0x728eaa6f3dea3ff2
+798, 0xb9fe60138d05628a
+799, 0x4670c98cb3b1c59a
+800, 0xed88e42657806925
+801, 0xa5f002df4a0fccb8
+802, 0xec8c1a342c98136f
+803, 0xa356077ed340cc9c
+804, 0xe87cc8ce72c844df
+805, 0x663b6b98d1b215f5
+806, 0xe8ad0986f0a51b9f
+807, 0xf77e0dd6396d98ca
+808, 0x16d0284cc96530d2
+809, 0x21dca6308157182d
+810, 0x4e80e0e6a0023ddd
+811, 0xec147ee76408744f
+812, 0x7772e8a51336d259
+813, 0x5e951007cd864259
+814, 0x9921dd15ebef245d
+815, 0xa094b493f836ae35
+816, 0xd7fab52dd503383
+817, 0x2b7f2d67820bfedf
+818, 0x15a2ab3bb9a269eb
+819, 0x92f10dfb889b32af
+820, 0x38fd566d1787da48
+821, 0x2b1f206adf06f0f2
+822, 0x998729e56a03596b
+823, 0x9caa4041b8b8284e
+824, 0xfe10ef8016e923f2
+825, 0x5181ba35c1a28b42
+826, 0xeb61ed1495837bcc
+827, 0x3a320559880e1a29
+828, 0xac1edb5359dd9260
+829, 0xd2ce3b57da95c407
+830, 0x4375b7b9f6fbba1d
+831, 0x446ec944796ff6bb
+832, 0xaec4b78b5e828092
+833, 0x58004da5a0c153e8
+834, 0x5a2a2fad35215a5b
+835, 0xeaf28165ff768948
+836, 0xc082d63ddad8c91f
+837, 0x283d10a4300609d2
+838, 0xd2b4552391560573
+839, 0x4fdbefb9e342f858
+840, 0xa43906a7198f7ef4
+841, 0xcef94695a5d3cd88
+842, 0x8296bafa49c5cea3
+843, 0x351e0421b7ce8812
+844, 0x81d394848a445647
+845, 0xbfda8ffeba72599d
+846, 0x823c00f90918421d
+847, 0x2bad7eceb840b4b3
+848, 0xed9ca1321e8475f2
+849, 0x33ca86b7634608f7
+850, 0x3351c775ea252a18
+851, 0x6ad518a58bbb6469
+852, 0x2114c295e612cd6
+853, 0x18ba78ee3c710e1b
+854, 0xfef3c2f9abae434a
+855, 0x2f2033652e9eeeb5
+856, 0xfa5baabf35fa10fc
+857, 0x38f160d51e3019b
+858, 0x455cbd400f87e960
+859, 0x942f1352c9b1445c
+860, 0xc61f0edd263951da
+861, 0xa447110dcc7921fd
+862, 0x4c811f5af4e0cbb0
+863, 0xe997fff7a5939781
+864, 0x1224dbad82b23c97
+865, 0x65cdec93d671a0cd
+866, 0x22990c95303470c8
+867, 0x40e6e0c576b97f56
+868, 0x53bf25c3c12b43fd
+869, 0x1992bafa30093644
+870, 0xc80b6626b1b3084d
+871, 0x46e018183031721c
+872, 0x10b23bc65323effb
+873, 0x176c121f9bd81f23
+874, 0x19047376d9ddd242
+875, 0x47c0b554263ae3d4
+876, 0x7d6c14c2e40bf7ce
+877, 0xeb3c30a640d082fe
+878, 0x5155bd10f1818c38
+879, 0x24ca5ce343390351
+880, 0xb9d7a5dfc4f89d34
+881, 0x1b8f0b8c3a3bd8b7
+882, 0x708ab95c219a2ffa
+883, 0x1cf3befb2776fec4
+884, 0xece471e68eb13a0a
+885, 0xcd9e646295c6ad1f
+886, 0x63a5a97e805b58c3
+887, 0x6bdd3bc818330ba5
+888, 0x642a2e1992d481d9
+889, 0x60362b11bbb1cc44
+890, 0x5c10e85acb9ad8f5
+891, 0xb8ceba6af37425d6
+892, 0x855bdea1d7415466
+893, 0x108bec5b41275d30
+894, 0xb0fce44c3caed15e
+895, 0x6e1d44a82e34b3f4
+896, 0x698ed735e1db5220
+897, 0xe4d427dcfba23857
+898, 0x85ad0edc6ebbccc7
+899, 0x7c9cd7bc58fa5ff6
+900, 0xc2f19c0d76f53615
+901, 0x773385c16db8f379
+902, 0x2bb9120cfa435e1f
+903, 0x295961649184169e
+904, 0x20de31c807978633
+905, 0xd36701dbda31b982
+906, 0x5551feb741996e9a
+907, 0xf8aaad4d0c52434b
+908, 0xce6f4b0dcaef6cfd
+909, 0xdacbbb33921fd85c
+910, 0x587a5cb0cf051eda
+911, 0x42124bd99d594fa9
+912, 0x9ad4a203e1ba3c84
+913, 0x775b758d4944c2e5
+914, 0xa7276e35b33e62a2
+915, 0xf5657d537c6271fc
+916, 0x69b45cfd145b352d
+917, 0x8672a0e552f7dfaa
+918, 0xd5c0b8f929f63c84
+919, 0x1062b14c01bf1560
+920, 0x3ae6927a61dc70e6
+921, 0x2ed5f06dc3ceef22
+922, 0xf79f417a63f1dbf2
+923, 0xf6a74c03f7ab1744
+924, 0xf2a8523818bb492a
+925, 0x8db8ec62b7262a19
+926, 0x4ac507b9aa8ac0d6
+927, 0xe1db6db360091041
+928, 0x97205197883ee213
+929, 0xc83c6265be4a8612
+930, 0x99e84f3f743ec327
+931, 0x931ab84b78b922f
+932, 0x900ebb02329a6201
+933, 0xdb720a24d6d93400
+934, 0xdd0de802d3780399
+935, 0x177fac072d4ff0d3
+936, 0x95f5688bd75ec33d
+937, 0xce19d334b40b7c45
+938, 0x780c71636ca880c7
+939, 0xf8188c0626e3ddbb
+940, 0x32ef96e74be5a76e
+941, 0x8f9adc11e6ee08c7
+942, 0x860a6c1d95bd01f3
+943, 0xb19d517b4a3054d7
+944, 0x196cb745dc3a674b
+945, 0xf611c20fecc9b445
+946, 0xdb0f8f14fbb237c4
+947, 0xfafc6fc52d7b483e
+948, 0xcffd5779f52badef
+949, 0x8a626e983ccfd9e8
+950, 0x8f2ccac91dfaaad0
+951, 0xbda4bdb3cc57689d
+952, 0x2a8af26a1d17c1c3
+953, 0x9feab9b49105010f
+954, 0xe2a9046372fe5c04
+955, 0xd55195108d63dd4d
+956, 0x4702e92922745d80
+957, 0x423c590b3ef222da
+958, 0x2b56e611f1272bbe
+959, 0x90d65326f9c21b6d
+960, 0x56777609cd5360db
+961, 0xa35a55eabfc4d9c0
+962, 0xf6134f2e8cf2a92f
+963, 0xfe7864a5510c499f
+964, 0xb205f42b43d89001
+965, 0x2618c3eb687e9050
+966, 0x1c85ebb7eafb6c1b
+967, 0xfe47cb43ba8f5e02
+968, 0xceed09f98fe493b4
+969, 0xe7e51b4e51c5e0bf
+970, 0x53343be07ce85327
+971, 0x816a17136951159c
+972, 0x92adfb8807d45418
+973, 0xd6eaf3cef3390e14
+974, 0x6d7c2adefcdd411f
+975, 0xdcde0a6376ecb43f
+976, 0x47d162d5a140ea78
+977, 0xf55fdc7283476df5
+978, 0x2f66d5d029982dfe
+979, 0x56a94f1fdf81fb24
+980, 0x46eeed06237aa921
+981, 0xb5f585d18b026038
+982, 0x29e12cba3b5a03a1
+983, 0xb8433a70685341e3
+984, 0x4e86f031c2bf4939
+985, 0x7167c51db1d096e1
+986, 0xa300693a1ce05ff7
+987, 0xddf7f5ef8994b6f6
+988, 0x5c99ebf9a1eff32
+989, 0x441bbc76e92979b5
+990, 0x7724f07eaaf30a94
+991, 0xd9946d64346a0d59
+992, 0x3d49489a6a952877
+993, 0x2b4846d1c8f4bc56
+994, 0x1d5f7891a6caaf50
+995, 0x7f9f458f479c6677
+996, 0x9177526a634cac18
+997, 0x82b316c3ba3cea55
+998, 0x84d769b6ffd7a5d6
+999, 0xa1230c54cf6f4b5e
diff --git a/numpy/random/tests/data/threefry-testset-2.csv b/numpy/random/tests/data/threefry-testset-2.csv
new file mode 100644
index 000000000..275604557
--- /dev/null
+++ b/numpy/random/tests/data/threefry-testset-2.csv
@@ -0,0 +1,1001 @@
+seed, 0x0
+0, 0x6dc04d22e096eea4
+1, 0xb8c023f98cd7ada0
+2, 0xa7efe930de644973
+3, 0xe05ea045a0add077
+4, 0x404ab9dfd366d169
+5, 0x4d42fb74611bbd30
+6, 0x9343a758211b6d70
+7, 0x4dab40877197665c
+8, 0xaa7b143cf838b109
+9, 0xcad1f00ed5cea835
+10, 0xf7c7d7d6c9a824a8
+11, 0xf20b64a5b42100f3
+12, 0xe155fec329e4ff46
+13, 0xe9db5c878d78e4c5
+14, 0xe96ecf5f3d8434fb
+15, 0xa4a5369e8b676159
+16, 0x26f540900462fdc3
+17, 0x805e684c0bf0600d
+18, 0x950c55250dcb9322
+19, 0x1df00ab0d9a5f9fb
+20, 0x2e75b8e9fb48b88f
+21, 0x8982e680b983b07e
+22, 0x7c730288ec003204
+23, 0x8d4a42efba070902
+24, 0xcae4317a285d026e
+25, 0x587af8ba811a8883
+26, 0x236cb94da85e9409
+27, 0xf4d25c2e0d7b2bd4
+28, 0xd51e53d74420f649
+29, 0x29f9ad48909f580d
+30, 0x39e2a46d5962fc7e
+31, 0xd40bb4045f9288fc
+32, 0x86d6d29c0a126484
+33, 0x198289c6d8589ec8
+34, 0x5c4ffb186e8f69c2
+35, 0xeaa9fe626ca6f961
+36, 0x58816ea059f6b7ef
+37, 0x9a636de4086ed493
+38, 0xe5a2b327a52f6500
+39, 0xa6d200345a8c4135
+40, 0x8ad50053fae7c70c
+41, 0x1afd6de09771e167
+42, 0x7372d8a4cfe85c9d
+43, 0xe2a99f3770165e93
+44, 0x193e99ffd7b45a30
+45, 0x4af13faae1f4ee8f
+46, 0xe799ae38aea2a54a
+47, 0x19bc5efb105b9b55
+48, 0x428799856ed8d2b5
+49, 0xc7e1c76dfb93b581
+50, 0x1c8000fb2afbe108
+51, 0x5d217734dc6fdcb2
+52, 0x4f9b436f2fa7b5d
+53, 0x6c6a8e841f5f7f2b
+54, 0xf7af258a895489e7
+55, 0xd4afe725c6deee
+56, 0x11959dd7c1a0e56e
+57, 0xa82b5a575ba9234d
+58, 0x356bb807c17fe67f
+59, 0x4113ba7ea9234d28
+60, 0x87c7fef17934c764
+61, 0xed5d2e29701db2ce
+62, 0x4b4bf08b62160f5f
+63, 0x32057a60eda862a5
+64, 0x446b5409b56a9311
+65, 0x31e84acfaf48c9f7
+66, 0x8951479289443c2c
+67, 0xff84ec0fff1b3d23
+68, 0x3db2e8a284e2cee5
+69, 0x2c8aca76f7caab8e
+70, 0xfe8ff095676417ee
+71, 0xbb7d6ed0c641e84a
+72, 0xd862d2552159e272
+73, 0xd320d329cd2b0419
+74, 0x41bd59f68a0fc99a
+75, 0x1adb5cf5cc0462d9
+76, 0xaa152c0b16d38826
+77, 0x1358fc52142b5523
+78, 0xdc29465d24a25fc2
+79, 0xda86700b570eaa33
+80, 0x461c6b79f1aea5da
+81, 0x4dcbf7406497da6b
+82, 0x5f9d552eef82e555
+83, 0x27261b525e6c02df
+84, 0x75076fe041440603
+85, 0x7cb47c620018a06
+86, 0xd7b7d17c3d1ee39a
+87, 0xbc7eada7c2ebc70
+88, 0xcac816c1d36ebb7e
+89, 0xbe1fd6bcb3d795a9
+90, 0xbd822d8f1edd205b
+91, 0x5c0ebf018ade95fb
+92, 0x9c6ee7cca010ad02
+93, 0xa210e3829a0b1b62
+94, 0xf5b25b53e25dba71
+95, 0xa4a69d9d6e73b9a2
+96, 0x2718cf614f82e185
+97, 0xf5aaf0eefd4f29cc
+98, 0x343f41179d6056be
+99, 0xc897506f84b7a9bc
+100, 0x547ce04e8810e66f
+101, 0xf61f6f95782be285
+102, 0x522e0fa1964a631f
+103, 0x500fe922b3a102ca
+104, 0xd39b38e1ae6f8218
+105, 0xce6079eafb932dc9
+106, 0x2896e00f1fdb8c46
+107, 0xe5719f1535cd23b4
+108, 0xc4d4dc27f6393389
+109, 0x95b3c17025e7ea85
+110, 0xcea3f280dae8ebbe
+111, 0x6d91c862fbf2fda2
+112, 0x99c5197b21f1f444
+113, 0x9ddb59c15db5411d
+114, 0xd6ed4ec1b494f92e
+115, 0x3270a479f7e1fcd7
+116, 0x79e8d185e02ad6e
+117, 0xe548786a4c6309fc
+118, 0x1dd3bf9d9f3fc9ed
+119, 0xe52ba084f8713b48
+120, 0xbd6c473054430deb
+121, 0xaedf39aa96279c3e
+122, 0xaa3a7bbe2fd381cb
+123, 0xa087544796e01cef
+124, 0x6596602a719be04c
+125, 0x282a96eaaa790ee1
+126, 0x313b3f42aa9ce4
+127, 0x9998a73e798ea881
+128, 0xf51dc8e618571e13
+129, 0x1df638afa23f4d8d
+130, 0x26385330319db8d5
+131, 0x1e1912386c519544
+132, 0x46c42a55ab556cdd
+133, 0xc049b83a6f04efa2
+134, 0xecd2d18baafa8af3
+135, 0xc1108f82d1765b42
+136, 0x7dcd72d9f729db44
+137, 0xfa73627c9a20cf11
+138, 0x9ac69ccfda0ee7a8
+139, 0xd02f2c2c1776c62c
+140, 0x75b4da786706ddeb
+141, 0xeebe6ece4a516bdf
+142, 0xf274b3ee4fb7ff3d
+143, 0xd4b1093bd35d25c8
+144, 0xc341c37b9cfe28c9
+145, 0x32c4fb8e8e6aea6
+146, 0x4adefc5712ca8606
+147, 0x750302d8f108d3f
+148, 0x76e6e3259264f240
+149, 0x31c6db85c206dc2d
+150, 0xda47cf5e8d07c49
+151, 0xc5939dd565786002
+152, 0xa02e5128b7f04e77
+153, 0xea2e5fa9ffdad0fe
+154, 0x7b1f9bcb5578cc5e
+155, 0x3fe776dc8398e6a3
+156, 0x31b97c4a0973fc4d
+157, 0x29a985a2bb602d89
+158, 0xe6a76cfb1a5c0faf
+159, 0x4f9f62edb1e6d19a
+160, 0xa589097a26f2b615
+161, 0x6bca21ae81e149ad
+162, 0xa6570f8fdbf98af4
+163, 0xa740f226d53bc40f
+164, 0xf0a4fe08ab331d24
+165, 0xdc1eaaff2c67c65d
+166, 0xf227a9a3e89a7271
+167, 0x1f539a105ac9a7dc
+168, 0xdf2fc18d2f4004ba
+169, 0xc36711f5ef877b67
+170, 0x29e30f4b30ad39a9
+171, 0x3af92a16534fad9e
+172, 0xf66e30d65df7faf1
+173, 0x2594f6d925228c49
+174, 0x8b8b3d9f20fa8a67
+175, 0x88e8d38366cb411b
+176, 0xe881af89393b5a8d
+177, 0x2f190890e152d243
+178, 0xbca3c2b43bd2e2ce
+179, 0xaecb17f2dceb2ed1
+180, 0xa07f556a40d4dab4
+181, 0x59c729c94cb2b4c1
+182, 0x5364cee304495a05
+183, 0xa628681d16e0c604
+184, 0x40e2f3e0d9124851
+185, 0xb3da737ef7918179
+186, 0xb946e59c4905271d
+187, 0xc079b7dd74752ccd
+188, 0xfce4f9ef02e73130
+189, 0x86baa280d2d9aff6
+190, 0x778ae7465aca2696
+191, 0xcb1f60b74f32078b
+192, 0x71bf826587c2c1f3
+193, 0x7ad5d51794ccc972
+194, 0x4b6ae15708464071
+195, 0x86c6829137a4110
+196, 0xc002aa2f64a5283b
+197, 0xcef3ae65b916b6bb
+198, 0x1e691414155bd2ad
+199, 0x9fc613bcc3a961a0
+200, 0xf55caa38c2b7866f
+201, 0x3aa6008a705ea431
+202, 0xc1587b4c3d3e6146
+203, 0x56e5eb96d0556293
+204, 0x796730a5bde01777
+205, 0xf4b5de3097e501a3
+206, 0xb5a2d840b9e7737
+207, 0x9059674f6dc9db07
+208, 0xddaa8f7b09773c74
+209, 0xce2e4850507c2b27
+210, 0x2d1dc2977de11249
+211, 0x335e7ef86408ea2d
+212, 0xde7bc6f22af7ad0e
+213, 0x4a36bd6edb976e6d
+214, 0x8eaef966a64aeb94
+215, 0x7689476d2572797a
+216, 0x4635219f62159d76
+217, 0xfe9958903e4d4ae6
+218, 0x288d7f77642371c4
+219, 0x2f17b9477da7c2e4
+220, 0x4a987e3814cbcb5
+221, 0xcc2ddf12905e9c9f
+222, 0xf5cba7330c86853
+223, 0xc646ecb698e336ce
+224, 0xc05d862c10b83e50
+225, 0xa673040049fdc79d
+226, 0x52871df3f523fb29
+227, 0xeae829e337d8a5cc
+228, 0xb17d70979ea53cd4
+229, 0x253a9e29eef246dc
+230, 0xdc09f4831946ef53
+231, 0x15a4034a8917e29
+232, 0x57246ff6c9594b8
+233, 0xd80620e906fd1cf4
+234, 0x861bec5cd30c08ad
+235, 0xc58f38b68714ccf0
+236, 0xd21c19157efdd920
+237, 0x51e1b8f40b8045a5
+238, 0xfd56fa4ceebbd2e3
+239, 0xcee1959a7f9d12be
+240, 0x75f22e1dfb5ade8c
+241, 0x3b87a61bcd763482
+242, 0x4018fbdbadcc95e7
+243, 0x3ff57380e846b8ab
+244, 0x7e44c8a4005515ed
+245, 0x824c847c6767640e
+246, 0x2b34ef279cdcf5d1
+247, 0xfd0bfc2786afed92
+248, 0x7faeff889a39834a
+249, 0x37a6cbda4f00e6c7
+250, 0x4214fd32c40b0894
+251, 0x4320e334bfd18ed6
+252, 0x74b1f0c2812db646
+253, 0xf48232c0988ea643
+254, 0x5841c46c56967a29
+255, 0xb08204c4c9e83fca
+256, 0x2a0bbd0b42a4a708
+257, 0xfe76573ec821c87f
+258, 0xbd2e46ac0feeb0d9
+259, 0x3552a2cfc1bdca32
+260, 0xfbdc96046c1020a5
+261, 0xd5d79356b52560d4
+262, 0xaffee5796b293a6b
+263, 0x5ef4dd67d2cc9042
+264, 0x7204094f6053ba36
+265, 0x1a89384fd317d01a
+266, 0x68129e5eaa1d4a28
+267, 0xcd2a9c8b6938cb65
+268, 0x434bb1bd9872647a
+269, 0xeaa17b0b5fa27832
+270, 0x442e1c5fa8113c44
+271, 0x38bcc81ea8386d97
+272, 0xa653c2f1f13a54f8
+273, 0x82d74e165850f5a6
+274, 0xf4b9d5dce18bd047
+275, 0x2666dba219ea409e
+276, 0x8ada69aa37a215b1
+277, 0x2cdaa0dc42ba5b64
+278, 0xfa7b44675ef531ad
+279, 0xd87d4bc750795b22
+280, 0x562fa1b77f3c52b0
+281, 0xaec092b6afa4b7f2
+282, 0xc2dcf8735598f14f
+283, 0xc65a4e439f790832
+284, 0x73fca9d888e184f0
+285, 0xaf38a6918896df93
+286, 0xeddbfe61d62902db
+287, 0x2e8e831abd28891b
+288, 0xdfea332c8ba5e7c7
+289, 0xb980b3ea4806e11
+290, 0x37f771e71cd26079
+291, 0x65b880af5cf288c3
+292, 0x69bef58494777df0
+293, 0x207706d3b013c1c6
+294, 0xe9b4014efb64e6e7
+295, 0xece0298dfad7da0b
+296, 0xcfed2f0d392af845
+297, 0xfbb1407059436788
+298, 0x74e9d65370ea5662
+299, 0x6e8bce550b2c36a2
+300, 0xf38d767f77abe8de
+301, 0xc6befbfbf4c57ddb
+302, 0x9fffced31abe51b8
+303, 0x761beb850b4659e7
+304, 0x5af78afae250836b
+305, 0xbe64a1bb37c08d0
+306, 0x5dd328d85327ba3d
+307, 0xa43238b39aae76ec
+308, 0x1f58743f079a14a
+309, 0x8f2b1a8cbe77f565
+310, 0x47526c74521adf72
+311, 0x542062d916e30f3d
+312, 0x2f3f86a12c7561eb
+313, 0x725a6f82106fd202
+314, 0x5939d692a6203676
+315, 0xcd607e13aeae5717
+316, 0x12a76dd01d4e46d
+317, 0xddc96ae023be007e
+318, 0x71341b774bace597
+319, 0xf69db6a379f38d34
+320, 0x87cd1ea3a6629c70
+321, 0xadc8798060e39c27
+322, 0x532982fe9d77655b
+323, 0x1c49d24a1bb2fb83
+324, 0xdcba3b57f87cf725
+325, 0x62b96a90dcaa0a3
+326, 0x89d704a4512cefe0
+327, 0x41685667b144aec0
+328, 0x49395424e7982bce
+329, 0xb493878ae98f87f
+330, 0x2b2a23e3696a5588
+331, 0x2bbb82d12da62157
+332, 0x98092e701b17da7
+333, 0xb55d717ca8a4d039
+334, 0xf4547583b84a03a6
+335, 0x9609c10b7e68759a
+336, 0x2a60eea68cdb7812
+337, 0x15146ffa8acbe5ed
+338, 0x521e3b2ca6e16844
+339, 0x27528ffae94c01c2
+340, 0xc5df652e08db6be8
+341, 0xba1275ce0594c2f4
+342, 0x9c66fc6882ac8cf1
+343, 0xfcc5c3e413a7dad6
+344, 0x8309532dc68a36c1
+345, 0x7f9351a45e66c50b
+346, 0xa70e6b123bdbad47
+347, 0xad49d29da3a694b0
+348, 0xf198452973eefdaf
+349, 0x53b7951ab7b24800
+350, 0xb226c827c5cf8233
+351, 0xea184af7dc0cece3
+352, 0x77d5dc22579d919a
+353, 0x583ec0e8d8295fa3
+354, 0xac35b75b4dd17e0d
+355, 0x7d273f1ef4ec8df2
+356, 0x85665ea56b49b5e3
+357, 0x7cc0ee21b59ec57a
+358, 0xae595b1cf72dc292
+359, 0x4eaf57e8e6880fb5
+360, 0xe51931811683e382
+361, 0xdb29479871fc8dc9
+362, 0x9b2f9c40c6506d91
+363, 0x35ee0dbbf239bb06
+364, 0x40aa630242bc7e2d
+365, 0xf3a3d9b2f5839a26
+366, 0x17e920c38a2e329
+367, 0xae28a796412706f9
+368, 0x3327dbcbf0cee5e
+369, 0xdbca13ee810f8546
+370, 0x390f9a7560cd1a23
+371, 0x444085fe4b30b123
+372, 0x4a1dea59c8ffa505
+373, 0xc12708a6534b7424
+374, 0xc331d65b7dd17bdc
+375, 0x4d1a64113fb84526
+376, 0x7af40a24916e7ba9
+377, 0xefc466d746e83001
+378, 0x631fb61962533374
+379, 0x355629ff71ec6c69
+380, 0x89e5c7e5a2b6b82b
+381, 0x307fc816d73c725e
+382, 0x3c7c2fad16ee2808
+383, 0x3db362fd0d93dc47
+384, 0x7c7d9b1ecc6bbc7e
+385, 0xcdab8413e0b594bd
+386, 0x3e45d66baf972abd
+387, 0xbd8bdc23f1926e70
+388, 0xfbc61c9f0b6c1a71
+389, 0x68b9e52b65d64f9c
+390, 0x5b371b49f49af63
+391, 0xdab60623156c1ebc
+392, 0x14ed99c617db324b
+393, 0x5c7f7b5f6db77c0e
+394, 0xeae562127e55128
+395, 0xf5ff71155fca2c5c
+396, 0x8271b2d1ad93bd4c
+397, 0x1ca96341dd5b034
+398, 0x49265a39bf18e8d6
+399, 0x5bbe70cdacf51f1
+400, 0xbf198a70b59ff062
+401, 0x41058370f356a21
+402, 0x47e8c7127044ea
+403, 0x3a031703f1e98d83
+404, 0x63db42df128a9d7b
+405, 0x67360bba6d058db6
+406, 0x2cb06097a2bdcc21
+407, 0x9e69d402ec5ce471
+408, 0xef55f0fa21cde5b0
+409, 0x2ce15bd742eb7acc
+410, 0x2f29a82fc4076787
+411, 0x312992a6d3fb93ec
+412, 0xd9abccb15b2535bb
+413, 0xdfcc55a43bad4c90
+414, 0x51ca5637dd4ea18e
+415, 0x9be4b1911b1ae9f7
+416, 0xb835b284b26d4057
+417, 0xca26765b4414729f
+418, 0x211fd5e340cd6f9a
+419, 0x64984a44077081d2
+420, 0x859ea6fc92cbf37d
+421, 0x99f190ca3756084b
+422, 0x38549b8f8b5a7201
+423, 0xc3940c2807d34ed8
+424, 0xbcbcf498fa77d02e
+425, 0x2c24b6360e1033d2
+426, 0x9602edbde8d9a850
+427, 0xbf4ce69ab0e00203
+428, 0xd479d334b0c716f3
+429, 0xeebd6ba9a827a3e1
+430, 0xea0b5cec6b42e089
+431, 0xded6e289584813bc
+432, 0x9894568e6a3f4ab8
+433, 0x73ee7a9acd6f667
+434, 0x4c849a0da094f2f5
+435, 0x4fe6f5fe0f90f786
+436, 0x9887c17ea5f92327
+437, 0x318df65aa9a53d5
+438, 0x70a7bc8178292fd1
+439, 0x612a38a535b8e3d2
+440, 0x15a79aa16d0228e1
+441, 0xd3288c336eb0b33a
+442, 0xf84e2fd1e4db070c
+443, 0xa2efb0e34d0114d5
+444, 0xc528e890e7fa6409
+445, 0x4b837fde84319af1
+446, 0x632edec918b02d23
+447, 0xce980f566494c149
+448, 0xe54e204d31452188
+449, 0x9ca51e2e7fe3a3b0
+450, 0xb0a7183126df963c
+451, 0x2de5fd96c125669a
+452, 0x17ab43849b96549e
+453, 0x49850d9bb767cfd8
+454, 0x632d44d7add93bf0
+455, 0x3fba66506af7b132
+456, 0xc06c6bdeaec6d733
+457, 0x3e7795ace33e8cd1
+458, 0x8f522c2f76ae3bd7
+459, 0xec883650a2d2b2d1
+460, 0xccb11ad5bff431bf
+461, 0x936d66262607c537
+462, 0x3102298a92f643fc
+463, 0x76078e8357fd5e15
+464, 0xf22a64a885d7e7ac
+465, 0xe111261b30caa160
+466, 0xed2c2d728a8ced12
+467, 0x64e659163f8d1d71
+468, 0x8c7c5f696f55dbe7
+469, 0xf0bdb7e3168a82d4
+470, 0x1eea602c6df9464f
+471, 0xa10d1d8502d43304
+472, 0x824245afbf95950c
+473, 0x7b4a64e619e29d10
+474, 0x73d4d21a8f412218
+475, 0x3ee5be3d8af0bc17
+476, 0x78979eebb7bb7b9c
+477, 0xe2acf9a6f17cb00d
+478, 0x77d8f02baea98694
+479, 0xba80648f6872987a
+480, 0x1cc1fa8be28d090c
+481, 0x9df7f91ded8fb4d9
+482, 0xd5bc13c3dad13991
+483, 0xa57c268e5153f06d
+484, 0x662f2e1fdc97ca36
+485, 0x1242a97a1148c369
+486, 0xa85178a88b821450
+487, 0x32fa270cddccdc1
+488, 0xd52af3c8d3d9ccbf
+489, 0x105d4ee4420a2035
+490, 0x8ccec92b29bb6f3a
+491, 0x7330a89b0ec713b8
+492, 0x712f7f946a661b8c
+493, 0xdd11f248be047eab
+494, 0x15aab9e558d04865
+495, 0x791b42bd188d3042
+496, 0x571a03a98b08d2c2
+497, 0xe8362e466304c2e0
+498, 0x690bcf82d6f7e815
+499, 0xf387d12b216e039e
+500, 0xa1a0e6721cadf720
+501, 0xc238cd658c3c48b6
+502, 0x303d33d956cd19b7
+503, 0xb91002fb2c06523c
+504, 0x3fd6c979ecc9e53a
+505, 0xe709a011bbd9684c
+506, 0x9f9730e4466b178a
+507, 0x5d6a951a17dea6de
+508, 0x8ad48c770be7ff5c
+509, 0x840349738f1840ef
+510, 0x62b71fa4d4713278
+511, 0xb54bc131be88e301
+512, 0xcd360f29092f1b48
+513, 0x51e2d80a7974e018
+514, 0x4716923492cb7c11
+515, 0xc5a3426512ccf92e
+516, 0xa29da51d76692ec2
+517, 0x7760e22a2a966fa6
+518, 0x17027bb9ebea4f10
+519, 0x1cbfeb90083c7472
+520, 0x21df956d73e46
+521, 0x3d3f98cec3a0f9c5
+522, 0xcbb44f6843e8f84b
+523, 0x5387cf5c8dc08f09
+524, 0x9874b020a7cd16eb
+525, 0xb26656f3d0e54b45
+526, 0xf7535314e62cc2b1
+527, 0x9d98c18c8b832a78
+528, 0x4782e4a90afa6bb0
+529, 0x98a5b50793977e75
+530, 0x699bfd767f3c1fb6
+531, 0x2b0c137df6bff06d
+532, 0x1dcf680df83ac493
+533, 0x41433da3b84a308e
+534, 0xaa5b2dab82fd7a7c
+535, 0xd35f4a2331f962c
+536, 0xfed4b74303c0ee4d
+537, 0xf9a9dcb35118765a
+538, 0x4d09906765751e55
+539, 0x96f997988dbaa2ba
+540, 0x761968dfdcee7a25
+541, 0x942f82665a09c18e
+542, 0xa630ee4197ab0e0b
+543, 0x68bfe324bbe3b7b1
+544, 0x8613dd09e8566784
+545, 0x3738178b0a67bae9
+546, 0x78678e656aa91115
+547, 0x6d182cdb34ba7a53
+548, 0x46749ef4e5670d88
+549, 0x2cddc1808c4018e
+550, 0x22b2aae091c52f90
+551, 0xa4709bcfefd0d6fd
+552, 0xade8916af4dd85f
+553, 0x763c7e7df0416c26
+554, 0x78b365ba6d6416e5
+555, 0xadba0adf9c5b5e3a
+556, 0x5a146cb126d32c3d
+557, 0xa5f2f65ef03145c4
+558, 0x2708930e062a88a5
+559, 0xfc94da4d17e4d4fa
+560, 0x78b500b283574f39
+561, 0xdb657f35be884f22
+562, 0x1de17d2450338525
+563, 0xc602ad9d8fe83980
+564, 0xc731d0497705a493
+565, 0xc3e443ea6c794843
+566, 0xb946fc377698953d
+567, 0x98ad8f7f193cee5c
+568, 0xa8da8ecd4301cb4f
+569, 0x99ff5cc72e206b24
+570, 0x2422ef61bb3c9be4
+571, 0xea62c83986a29b61
+572, 0xcbcfb5a9953d1a6a
+573, 0x229f258aac962310
+574, 0x8730e2f36b1fbf6b
+575, 0xc3d6ddbe26ead961
+576, 0x814fc47c7edcbae0
+577, 0x23af1859cb36c99d
+578, 0xeadfaf827ee1de0c
+579, 0x15ac2339684c36d2
+580, 0x54c617fd9b17d56f
+581, 0x8b88689c24920b0d
+582, 0x5294092543a1f59b
+583, 0xbcf7fadb518fad77
+584, 0x8e784c0359e6349d
+585, 0xa45831bb0c97d3d7
+586, 0x1d0b8d79ab84847e
+587, 0xd7f23d7e384fb139
+588, 0x8fc7ee55f1d37f0d
+589, 0xc44dc853b1913765
+590, 0x20d40baab760366a
+591, 0x6067cee1fc99a47b
+592, 0x7927a7b24ecb93bc
+593, 0x26819db47e3cd94
+594, 0x236853cd14a54aec
+595, 0x36e7a2f60284be9b
+596, 0xb11accb3a708d6e0
+597, 0x98c7651be6436342
+598, 0xaf27f94af527010
+599, 0x4ad2ef538542349c
+600, 0x63becd7dc3d6fc6a
+601, 0x8dfd8f874d18f093
+602, 0x2401cad63eaeaff3
+603, 0x7be4a82015531b1e
+604, 0xfca36bc859cff476
+605, 0xbd3f9383a20e1fac
+606, 0xee9e7e4bf1c444f6
+607, 0x4ad8b91ea66cd1fe
+608, 0x85ffa6d1cafcc553
+609, 0x665f66043e6bf320
+610, 0x4d409c2d9cb23e6a
+611, 0x1815b94fcb2e85bd
+612, 0xbbb8439e003579a2
+613, 0x16dbe31fced48255
+614, 0xf4f7079142a17040
+615, 0x96df1c5c35e5c231
+616, 0x41fc7faaa1bd8cd4
+617, 0x6a51ef3658d4bd38
+618, 0x31e64c6ff2d1598e
+619, 0x20f2f339395fec58
+620, 0xf329aaa477f87f9f
+621, 0xfe461c3073c63ad4
+622, 0xa60ce6531c0ab64a
+623, 0x527eff919a0305ac
+624, 0x7708978a5d010a53
+625, 0x2ab687dab81f0ca
+626, 0xa7af71e850497d34
+627, 0x8edba42a07e35155
+628, 0x45b4f3ae5e07472e
+629, 0x29e3636e047b7c5e
+630, 0x6ddd57807c1830a3
+631, 0x800e6743648c9cb5
+632, 0x921389557585d720
+633, 0xf2fa96f5bbdcafbd
+634, 0x4f1634ad80d0bdcf
+635, 0x7125668667218b0d
+636, 0x23373d9919906087
+637, 0xa27ea3fbff83bd41
+638, 0x871cbab37176d63c
+639, 0xe6939db32970f816
+640, 0xf3484c2ce0dd0481
+641, 0x76e8298b27b9d68e
+642, 0xf966f9fb426c1950
+643, 0x4066c4f62c307e4d
+644, 0x187ddce6f94afb2
+645, 0x656f00e6a70fbfef
+646, 0x2ef17886ec419448
+647, 0xbd748ea59342e5d2
+648, 0x1f204c5d3c9428a1
+649, 0xc08854fa8992794c
+650, 0x17d0f325121fc218
+651, 0x34c63c258a663b88
+652, 0x60f94e4cf248344c
+653, 0xf9ffcbcdce936a7a
+654, 0x93ac50ca4456c69d
+655, 0xb9039b4d7dd82c9a
+656, 0x117e3c6d6891e836
+657, 0xff6289aedb2ab5f0
+658, 0xd5f695f19d6786f6
+659, 0x8bab970181c86e97
+660, 0xee6be4ee832333fa
+661, 0x648ea0623082ae36
+662, 0x972b001b4b4d4431
+663, 0x92fb47b9ff9b1ee4
+664, 0x792ed2bd14f8896a
+665, 0xc98e2723d55b08d7
+666, 0x2a4f0b7da6210c89
+667, 0x19a1fb785fec7a64
+668, 0x937a44924b337455
+669, 0x26802ce94caeaefa
+670, 0x604539849b56a532
+671, 0xccf6eeb0a664d39a
+672, 0x545584db524a2307
+673, 0x8ce4edbc37515d8e
+674, 0x1d548ba9281312b5
+675, 0xd0c51f891244ed57
+676, 0x3b464ba79600dd6c
+677, 0xc28ae0f8c4db373
+678, 0x938e49fcbbe8941
+679, 0xf084e4c8d9799dcd
+680, 0x61ca52d24bdd1083
+681, 0x536d617222724841
+682, 0x506cd8085d16a6bb
+683, 0x422158a96747781d
+684, 0xbd13ded440c16bb6
+685, 0x97913b1b8c2077ca
+686, 0x5ab588aab438e8b4
+687, 0xf4c6831523402b4f
+688, 0x91e962c39ccbbac6
+689, 0x861c95ffeeb7b7ad
+690, 0x6b318a9abb0eb7a2
+691, 0xac4164b45978ce20
+692, 0x71d64942f1d72b40
+693, 0x1675fe85018ea357
+694, 0xe19ef9073183417f
+695, 0x3e057316b3a37a7c
+696, 0xaccd00b688c8fb36
+697, 0x8c2d1b84d24b89d5
+698, 0x4cc97086400b2631
+699, 0x38c2cb4daafa93b5
+700, 0xd44e889f968a38af
+701, 0x53cf738410523792
+702, 0x487b1b84bd6f0ee3
+703, 0x1824ae549bfadd6b
+704, 0x7b6654bfe0f085d2
+705, 0xa289e4fa5b2f971b
+706, 0x24c971b485491f26
+707, 0x8827b700bb7136a
+708, 0xe2871794cd6f7a2b
+709, 0xa21bfa8e0e237703
+710, 0x8447f083c77d1be
+711, 0x1b1d926efb334728
+712, 0x8dd2d4fed543c38d
+713, 0xe69ba3c162cd489f
+714, 0x3f9659c66b35acc3
+715, 0x45ac347675850ebe
+716, 0x8e572a9ea7ec6b12
+717, 0xd3a11284b37761b9
+718, 0x8e276c1c9616b7ee
+719, 0x7a03569e90501954
+720, 0x4ddd0afb9d3f2605
+721, 0x9342896d66482c8c
+722, 0x9edca50722c69db6
+723, 0x3dff88b2257e3ae0
+724, 0xad92c2d56ccd8d11
+725, 0x81e6dc441c0b6df4
+726, 0x1a8a0d10f7326b8d
+727, 0x8382991eb90958b
+728, 0x9570d9b1a0527ba7
+729, 0xa1820138d6f96490
+730, 0x1c8c678ebb2aeb4c
+731, 0xd782fddd578fc4ec
+732, 0xc78d60cf41e509fa
+733, 0x82dfbe4d435f747e
+734, 0xd9a410610e4b3dca
+735, 0x2d687c7a90220751
+736, 0x6838c5d233cff81c
+737, 0xe2e64ef24f7b004b
+738, 0x65c11d97293f0da1
+739, 0x53e2016d79145a35
+740, 0x3ebd6882b1de3c7c
+741, 0xb1b47458c2b31ac5
+742, 0x4321907da2d2df2e
+743, 0x57f211e1521e0eb9
+744, 0x25798e7fa3227f0
+745, 0x9e696273f7255ec6
+746, 0x784755cb23c3190
+747, 0xd4e82b43d8eb119a
+748, 0x894047215bf58241
+749, 0x71545bb714d43bba
+750, 0x3eb48187007c99a2
+751, 0xd3a03fe5a57dde89
+752, 0xe336d1bfc90141f
+753, 0x13e5b11c8ab27b7f
+754, 0x476e5d1c3f5ddb41
+755, 0x7e0987fb7ea434ca
+756, 0xa7af6d90f6868d59
+757, 0x16be8514db2ba69b
+758, 0x9358b7eb6b64161d
+759, 0xc6e6e49346403b75
+760, 0xb8738eaf21cb369c
+761, 0x65a2a7d3ad804624
+762, 0xf49f135e789969d4
+763, 0xf20a963cbeeaae3a
+764, 0xd17e058559753d56
+765, 0x8e8bf41d9c4916ec
+766, 0xe48ef68e5aa23dd3
+767, 0xe2f0001eda60c8bc
+768, 0x5b99e00b24f1aa8f
+769, 0x4ad710b2a99b14c8
+770, 0xd3aa3920af73ddd7
+771, 0x3d76e216667d1382
+772, 0xa8c330ec75317940
+773, 0x12534fc207bb29a9
+774, 0xd15c55c83b4a35e6
+775, 0x535e26026622714d
+776, 0xb56782cf34123bc1
+777, 0xbd925db7098d6155
+778, 0x682df0f1e54e2d9d
+779, 0xb330167f33195b63
+780, 0xe9658f089aea3987
+781, 0x2b095fe8bc8fb610
+782, 0x204269c3aa0af463
+783, 0xd1c858c4a6b68013
+784, 0xe2f281cf9ef91e34
+785, 0xc29a55f11e4479c6
+786, 0x12a8e1df7d6166
+787, 0xfa0b4dd7d67c578
+788, 0x6db2b74e2e42db1
+789, 0x478694b16b033d71
+790, 0x47a79614736e8c3f
+791, 0x247e0e4d132cf874
+792, 0x22845b7634d0e71f
+793, 0x9942faa26a68bb81
+794, 0x381aeeee89549313
+795, 0x2052200f6ff0d6ba
+796, 0x5c9f92b675b2f641
+797, 0xe6b34f7a1e196039
+798, 0xe1b77d497bef7516
+799, 0xc59d1b80b7b3b30b
+800, 0x819f5098375913b2
+801, 0xca0f73cffdaa9370
+802, 0x2f5bf935c691c5f4
+803, 0xecbd8bb256d09c58
+804, 0x43406aa69a99ecf4
+805, 0xf05f8b2ee179651d
+806, 0xb7c70142a0228f54
+807, 0xfc2db144bec4b245
+808, 0x2abce886e1a45ebc
+809, 0xaf58b72a59bca78e
+810, 0xa52b038f4d4541bf
+811, 0xc0d14bf583b241aa
+812, 0xc8a1abd7115cf8a7
+813, 0xe02e5a30a769d474
+814, 0x56acfdbd29796da9
+815, 0xe7387234b8b03889
+816, 0xf1227dd110b8f9c1
+817, 0x8b124ad0cb62d460
+818, 0x97b7c747f3b13887
+819, 0x216f43a8fc2314bf
+820, 0xaec316edaf92f3
+821, 0x10186bef157d36fe
+822, 0xf37a7ddce615aca1
+823, 0x9b5b913d16158f6c
+824, 0x59be9a31bf90f02a
+825, 0x24170e196a66a0a0
+826, 0x589a9527086fc354
+827, 0xc5990d0f438d434a
+828, 0x90eee29b52e7a094
+829, 0xb703a0dc266849dd
+830, 0x6d0bff0ad3ad2faa
+831, 0x91f7fc0cd9e78804
+832, 0xe86041baf693528d
+833, 0x1efabed627bb50a6
+834, 0xb59397e5f2895f58
+835, 0xd07f3b88397416dd
+836, 0x340f1719b497c11e
+837, 0x284e6cb714f9b6
+838, 0x185fc6ffc0b68229
+839, 0xfa2deec9e6c26b24
+840, 0x62c6578b4b262188
+841, 0xad4109b1cc118f48
+842, 0xa395d493b26d6f0e
+843, 0x325b4fe3d0dd4338
+844, 0xf91410de49c18d30
+845, 0xf07bf8b60923ce02
+846, 0x1423fe617d564876
+847, 0xc077f782126eb9cf
+848, 0x2fcb2f20910e89ae
+849, 0xc2bd451afd2e6816
+850, 0x77fb4184cb7d54b7
+851, 0x3f179aed62349343
+852, 0xd9186ae032d49425
+853, 0xb5eb57360137bdf8
+854, 0x3e4be92a340c6331
+855, 0x8429236eb3127098
+856, 0xdef72542e2b2b80
+857, 0x63a489df51948c4
+858, 0x8a7e00c797fde2b4
+859, 0xaf0ecdb100a40c24
+860, 0x5861013d27e2e75b
+861, 0x755b9daf64e225f3
+862, 0x3d2df8752fc1f0a5
+863, 0x603430c7044c9cc1
+864, 0x861421e1eacce08f
+865, 0x617e02ea4d46a34c
+866, 0xb5a65006a14421c6
+867, 0xb0f80b679b414c72
+868, 0x9906164388248865
+869, 0xc9c844ffa4051128
+870, 0xca9d7bf3530f5c33
+871, 0xab16e556b494c5ee
+872, 0x7221a1b8ef1aa54d
+873, 0xc271845c7d1a4e37
+874, 0x6a76797104475a2
+875, 0x908e423fb8735430
+876, 0xb5bb58134b1677c
+877, 0x9ffdd2ae9c3118c6
+878, 0x7e180fcd6840b8cc
+879, 0xf94537df07d2fdc4
+880, 0x5cc348554d45bb14
+881, 0x3d4daf3c2b6664b9
+882, 0xfd04db3f786791ad
+883, 0xc493d37c83bb96d2
+884, 0xbc9faef5435f86f1
+885, 0xbc65cb3d3f6e9d9e
+886, 0x9cbf2ffa56e6ecd1
+887, 0x9250836b7c20ad40
+888, 0x4f5c0071a0db9a4f
+889, 0xdc3f0522b1445aef
+890, 0x7506e5599b850a1f
+891, 0x81ed2abe0e2de08d
+892, 0x240490146352067a
+893, 0x3c77af13f5eea2cb
+894, 0xa7f4cdb8ff827eb4
+895, 0x1417242e31ad2476
+896, 0x76016b03999f9478
+897, 0xf94521fac0306668
+898, 0x8269175893be1d41
+899, 0xfc753632a234f285
+900, 0xf612755268cace8d
+901, 0xa14828c9024be019
+902, 0xfa70c71b9d1eaf55
+903, 0xdf1b71a62e31de5d
+904, 0x5501951e0e1edc8a
+905, 0x2f8f803b8df69cde
+906, 0x574f363439f7da1
+907, 0xfb10c35585727813
+908, 0x749b3c2837397d13
+909, 0xf3cdd1febe8cfdc7
+910, 0xe394963ee5056211
+911, 0x577d7d7b18de73af
+912, 0x47ab5d83b0c59c10
+913, 0x9dc8a3fadd1e6f9
+914, 0x83fe8257e75854d6
+915, 0x2e43cb3aa0046160
+916, 0x1dc475fcab4ac1dc
+917, 0xf0bc49e0566ce0ec
+918, 0xb603cdcf1f30fa6d
+919, 0x526760cc6bb6babe
+920, 0x7c1da274cfc404cc
+921, 0x1e7f5020e4872eb0
+922, 0x5810d9ce7b4eb5d8
+923, 0x5ddd35b6fdc8ccf1
+924, 0x3384120a60586e91
+925, 0xbea2bd919e0f3ce9
+926, 0x5a5e242545609467
+927, 0x4bde47bcf26eb4f6
+928, 0xb0a735deefec6c20
+929, 0x68a22c177454e398
+930, 0x8c9bdb2d15db7858
+931, 0xcf3748c5ce8663d9
+932, 0x4815c2a33d2e0b89
+933, 0x8ccabff1a06d51a8
+934, 0x9a5ac9d5cd9bde72
+935, 0x1dc5a9d71a51705e
+936, 0xbcdb2971a66f27a8
+937, 0x31b0cd0bd56e4640
+938, 0xf7efe6b1f1f5dabf
+939, 0xc5c99d9b4fb22013
+940, 0x1ba119bae4d4fba4
+941, 0xf65a6d9da77cc4bd
+942, 0x25cd9545d90e715b
+943, 0xb7477672a3531ea3
+944, 0xcf247ec31abeebc4
+945, 0x7e057e2450496fbd
+946, 0x38ef5e25d359c979
+947, 0x4c19225c27c2eace
+948, 0x2f0a528453e09547
+949, 0x59c8f78eba33f6bb
+950, 0xfc8e46c35ef2fd53
+951, 0xad32d2fb43958df0
+952, 0xa4925809889d9dec
+953, 0x91511a8ded719be9
+954, 0x8bafdd3b61b109d
+955, 0xedc9854399b02ea8
+956, 0xa50a9ba9d3f10ac3
+957, 0xbd94acf2d2a1833b
+958, 0xcdefa8e500cb91d6
+959, 0x95d64c722dd9ce9c
+960, 0x2593274b7561d701
+961, 0x9d5854a252f7d4ee
+962, 0xd799bae55a43bac4
+963, 0xd56a4f738e03f65
+964, 0x9c100f2599fe70cf
+965, 0x1fb9b7564fd6984a
+966, 0x16ca3ffcfbc77ab5
+967, 0x3a98bb3993bfe243
+968, 0x7fc4a69a94fc389e
+969, 0xf4adfc0494731b85
+970, 0xd691ed499cd189f2
+971, 0x7207391cf3664115
+972, 0xae2186bf1bb2773
+973, 0x5f10cea41eee2bd0
+974, 0x35f3303dba442fce
+975, 0x41f7580460af8f7d
+976, 0x6f92dcae967f8045
+977, 0xf8a23d127dfb64da
+978, 0xca2955a095bfa56d
+979, 0xf5f9a75318e0b668
+980, 0x94eabcf4d9fffbc1
+981, 0xfb5f2b3c85a44eb
+982, 0x1edb77bc0d4ceef1
+983, 0x98bbacdb3bbbfc39
+984, 0xeeb6d6bc48b6156e
+985, 0xc9c56b8f2fa29b0e
+986, 0x22f31ccb223886d0
+987, 0xbb7f3e16bc706aaa
+988, 0xe38c1e50cd965c52
+989, 0xb15aa0b68271c538
+990, 0x1c0dba1cfa587e61
+991, 0x70f267cd2d88e846
+992, 0xa439b7443ffebc10
+993, 0xd586c99b86177873
+994, 0xb05ff9807bdcb212
+995, 0xd7c08bd208fc8e05
+996, 0xd11063113d01ac5
+997, 0xd4c9beffc525f0b8
+998, 0x3d7303181643bc80
+999, 0xd75ef9b19286142
diff --git a/numpy/random/tests/data/xoshiro256-testset-1.csv b/numpy/random/tests/data/xoshiro256-testset-1.csv
new file mode 100644
index 000000000..534799b04
--- /dev/null
+++ b/numpy/random/tests/data/xoshiro256-testset-1.csv
@@ -0,0 +1,1001 @@
+seed, 0xdeadbeaf
+0, 0x876912846bc23b4b
+1, 0xc392a0d7b1e2ce1d
+2, 0x3a77bd8137033383
+3, 0x3f9bb87b973f5364
+4, 0x512bacc4fc06efaa
+5, 0xd46c8d8fcbdcf201
+6, 0x377867a5134b9398
+7, 0xaaad55c3f16b804f
+8, 0x8d0073c1156e04b3
+9, 0x636fbcd73be174a3
+10, 0x5e1b4e1dee91170e
+11, 0x730f46db723ad8c7
+12, 0x10b330f0fad1bf5c
+13, 0x88cc7f11032dbf1
+14, 0x988c1508b1baf298
+15, 0xe95976be578a5817
+16, 0x858fe732639b48ec
+17, 0x5b64491ba03516e1
+18, 0x3546e28c5de1358a
+19, 0x384c66cde49bd1a6
+20, 0xdbc3ca974f85cf87
+21, 0xf540c65c435d9ae0
+22, 0xe037047fd8120ac6
+23, 0x9970c031b58d7d63
+24, 0x5dae4898619ad11e
+25, 0xdf3232cc92ccc65e
+26, 0xa16beb0132ddff72
+27, 0x34d1995264d4c508
+28, 0x62da0bb6460ac302
+29, 0x40d2691b6746a05
+30, 0x7fb2ff58185cd1c0
+31, 0xc6e06bc2fe11d4b4
+32, 0x7116e104e2f75ff0
+33, 0xb1595e1cedf7141e
+34, 0x29ebcf708d3bd9b
+35, 0x628b49afc2d944cc
+36, 0xab104fe5d2bf804d
+37, 0x57ee3653bf484fe2
+38, 0xbf4d601f70f7f9ac
+39, 0x2af4545067b5c32c
+40, 0x34f14b2f8fa98e75
+41, 0x9b585ee1c787c12a
+42, 0xc2e4f8a4e27f80e
+43, 0xeb9876161a0b619d
+44, 0x8ea0af67974da802
+45, 0x6e003252a09ed65
+46, 0x97526de03c99ffc5
+47, 0xb8bcd950ba3f2913
+48, 0x5da355c049c286b8
+49, 0xb50e613d8186312a
+50, 0x945c21f6c4d7ed77
+51, 0xa7239005836ad3fd
+52, 0x2129afecc78a928f
+53, 0x9ae55d1d91c75ac6
+54, 0xf50bb42f77b43ad5
+55, 0x576f324976a7672b
+56, 0xfa6df7e9660cfeff
+57, 0x806144cc58601f9d
+58, 0x85b39b38330f7af8
+59, 0xb7d0c116d3f9e866
+60, 0x35dfac0003ca608e
+61, 0x9b6320f46d3926c4
+62, 0x4242bbd0776236d7
+63, 0x8aebcd05dd117b2
+64, 0x70df852ded653924
+65, 0x11ae5f39da26fe1c
+66, 0x312e11e7aa00c4f9
+67, 0x1f038c235ae539f1
+68, 0xb997522615f4a73b
+69, 0xb51bd427274c0935
+70, 0x55e7843d0749c8c2
+71, 0x37c3a6b0d4352cb5
+72, 0x2df190f46312134
+73, 0xc2ecce075d612185
+74, 0x6b490f64cd1f6d92
+75, 0x8a548dad9af41d4a
+76, 0xc7a4454c7debc6bd
+77, 0xdc2892cd77b00030
+78, 0xb760ac60c94d2b18
+79, 0xe35231cb73492527
+80, 0x55c9f1ee4910e683
+81, 0x97a202d0ad5fdb1
+82, 0x8ff5184631a2b156
+83, 0xcf942173d034770b
+84, 0x9a06010116e675d9
+85, 0xa217423b96ae34c0
+86, 0x722e29ffb7567065
+87, 0xbea7d7060cd1a4c0
+88, 0xbcbad83a19de8545
+89, 0xa88c0985b701818c
+90, 0x6c1fb7fc4ca8034
+91, 0xb9e24b68f54fb1b0
+92, 0xd925a8a4b8277771
+93, 0xc33beadd812f9876
+94, 0x7b512eae51ab25c7
+95, 0x3a5436f701a0064
+96, 0x6fa2dbfe047f973d
+97, 0xa21076a7f59bef78
+98, 0x3c45f50a3e6f06d4
+99, 0x6cd17ca1a4fe09d
+100, 0x8121cf3ffc6a1dd7
+101, 0x7b74926ec6d5a7e7
+102, 0x51eb9833ab8da289
+103, 0xaeb2a89fc9beff8
+104, 0x9fcd9cd992f8c183
+105, 0x5190d2596093217c
+106, 0xf954156453009abc
+107, 0x2bc45642def07a82
+108, 0xa8e3aaff7419393d
+109, 0xff66dbc36b6f4899
+110, 0x7b4481a28034b8fb
+111, 0xfc1c059bcaf7021
+112, 0x699b4509593d9079
+113, 0xf2c3cd6bb60ad015
+114, 0x76d11b5fc81c9ead
+115, 0x5f28d4878bb011e4
+116, 0x62384630f3e25d61
+117, 0x260445ad18a3738
+118, 0xf92f0a2148f340d2
+119, 0xcb502f1bbdf45006
+120, 0xed89ca318747a00f
+121, 0x37597ed2125b038e
+122, 0xaee1e4927f412f8d
+123, 0x18168368f58eccd9
+124, 0x89db16f70186a9c6
+125, 0x6f428e8fcc8a6ad9
+126, 0xb3865b982fe6b986
+127, 0xc1fae9d75ee9bda2
+128, 0xa0b8256d2615e34
+129, 0xd15c4642cc470639
+130, 0xf7f644305154bb69
+131, 0x65592281bae36127
+132, 0x840ebd2e2d314c8c
+133, 0xdb08b0bec618b8de
+134, 0xaec9540e4eabc7a1
+135, 0x2473da693e1ec36e
+136, 0x6be6fdcfccd55dc2
+137, 0xce279e14163df56b
+138, 0xc55baabca12406eb
+139, 0x7283920d8e00779e
+140, 0xea67175f9bd0ce52
+141, 0xe86bc373ed2f7e55
+142, 0xac3acc2569a30892
+143, 0xc749fc876e37766f
+144, 0xddc74e16941b8d6e
+145, 0xb9c8f5b769849f7b
+146, 0xbab826c423a209a5
+147, 0xf1c1b54021fe6418
+148, 0xdad8586480fd30b0
+149, 0x8f713802438a6a1c
+150, 0xc3c2f2b83c7d60c9
+151, 0x9697fdffad622052
+152, 0xcb72a8d5150d0507
+153, 0xc1371661bc3c9721
+154, 0x88ca5be46f1d728e
+155, 0xdeb9ae3295bb0e4
+156, 0x2d83f4159ad3e2b8
+157, 0xb30c4ada3b396a15
+158, 0x5aac4c5e77f1d4d4
+159, 0x529374c779ee531
+160, 0xb5919e58de0d772a
+161, 0x820809cc936741fb
+162, 0x53bbba6d2a08acde
+163, 0x9a59ed5a21be8fc0
+164, 0x88aa7be1658d60ef
+165, 0xbcb7fc1ad8c7d828
+166, 0x11ab2e78229e89fa
+167, 0x2056ea8f9c5867f3
+168, 0xfa27e3857ecc3b94
+169, 0x1e42b81f1d84f464
+170, 0x5e1014b09c812c14
+171, 0x9aaa9d8468d9e341
+172, 0x1bfb091f9815ee21
+173, 0x5caacbb9cc7aa2fe
+174, 0x58d8a864c538e3c5
+175, 0x539382e5be9cc79
+176, 0xbd89db78d603a58
+177, 0x39e1a6cbda31f0e0
+178, 0x466a59433990edbf
+179, 0x56d18c76058e2ce7
+180, 0x2602ce3675d0bdc1
+181, 0x1739af88af931f1b
+182, 0x862a947f2809512e
+183, 0x6f18216e0710069d
+184, 0x5f6e251768ff8b2a
+185, 0x3a3be0c1955b088a
+186, 0x22b96dd914c79b47
+187, 0x18051e8fcfce2edf
+188, 0x80b0f2cceec301d9
+189, 0x868586cb1388e737
+190, 0x22f7c668c6e0da2d
+191, 0x13509ef57125f1e7
+192, 0xb91dce92077fb2d1
+193, 0x31b4841411853ad0
+194, 0x32e2ddc8b722c29f
+195, 0x5ca01b204c0b166f
+196, 0xa2e337cd3dd5a9d1
+197, 0x4131b472c753075d
+198, 0x7efcc7a894c9a981
+199, 0xc1d9c33d90e01db3
+200, 0x9053f0abe677615d
+201, 0xd2034c8d4e1aa8af
+202, 0x227275362bffc8f8
+203, 0x8d5a9d405ecd0179
+204, 0x7b30ddf5440f02d1
+205, 0x3620f9d1867ad68d
+206, 0x747ed65beeeba258
+207, 0x1691d5d4a7786e03
+208, 0xf50455cc65243abb
+209, 0x4aa91863da8b65d5
+210, 0xa69807c0a08dfafe
+211, 0x4fcc33b50b00b3d3
+212, 0xe0671f97db7a35d
+213, 0x263f8eabf8f9044a
+214, 0x27c85ae64e97e89
+215, 0x4520b74f57c7df51
+216, 0xa37c38ec047eb0b8
+217, 0xcabd6e3e95e72d25
+218, 0xe4bb620d2e3a16d9
+219, 0xda87a4272a6ad108
+220, 0xc867f3fbecd0384b
+221, 0x8691f46246273ef7
+222, 0x5ce4229e2422943e
+223, 0x8c40ee86a9691904
+224, 0xcb9b83f846c9c9e4
+225, 0xa931ac81531e1529
+226, 0x534cebd4cd8fd2d9
+227, 0x2e3cf1c29aeaba0d
+228, 0xa3d2e692301343dc
+229, 0x1ef408da84681a8c
+230, 0x64f7f2f7d3c02da7
+231, 0x541c50b180553eec
+232, 0x536194b38f566c5b
+233, 0xbb7a282cd9f36f9d
+234, 0x527010351098538b
+235, 0xfe30504c6e499b4d
+236, 0xa7c3602410a59e53
+237, 0x8f44cacb7b7d1267
+238, 0xe40bf315dc5df184
+239, 0xde7eb3b70c1f41c1
+240, 0xc41aecca30a4bb9c
+241, 0x3bc0e028ccb19d93
+242, 0xe166010bfe275442
+243, 0xa70abd28e44af7ca
+244, 0xd4504f4548d0d888
+245, 0xa55e4eecb4d88bb5
+246, 0xb6ec6442a017ef5c
+247, 0x1c62a5d488494ff6
+248, 0x1c09e177b467f30d
+249, 0xb9c90e7ad2f47ecd
+250, 0xde2c186b02cc341e
+251, 0x1a82ff0a466db4dc
+252, 0x61db3602688eb096
+253, 0x920df7c1d2b0e8f1
+254, 0x34a2f18c92e9b6ff
+255, 0x14830c36acd9ae19
+256, 0xc321ad1ffbfc54ff
+257, 0x9e4b1c6799ff696f
+258, 0x1780ce1f22fd9395
+259, 0x26c50c518a484cc1
+260, 0x7461330b1fe01211
+261, 0xd81e75bc84a15cf1
+262, 0x86ca81452380da38
+263, 0xe6b956498fa9f351
+264, 0x9ac04fe965ce35cd
+265, 0xa4ec6641c5518519
+266, 0xa03e3054f706bb49
+267, 0xacb9b452fd8267ed
+268, 0x302282d4ce222225
+269, 0x8b56489048399d5
+270, 0x1feadce5b06b509b
+271, 0x7cee1475ce616c7f
+272, 0xd414bce3075397b3
+273, 0xc71f6a8a8eff334a
+274, 0x99b3df4a89d93e
+275, 0xc702c1e101f4f2dd
+276, 0xfe3a7177f2ec77c2
+277, 0xe080a478564afac9
+278, 0x665d0087841f481b
+279, 0x4dab6f59d3c1a144
+280, 0x1ce185d7d140c8f5
+281, 0xb007fa8eca9036c0
+282, 0xf18f48ac88312c95
+283, 0x79550ca0c88204cc
+284, 0x9970ba85bdb15f27
+285, 0x2b55457ead5f009e
+286, 0xc4f24923b930e27a
+287, 0x8c3018e3bad3b6d6
+288, 0x790837a25c10ee7
+289, 0xb2dd8ab9f1def8a8
+290, 0x363ec10ac55a521a
+291, 0x971af7eb3b1560ad
+292, 0xe1a3cb1562833819
+293, 0x6e60e9949b6af18a
+294, 0xc379834ba34f6820
+295, 0xb668c3b288a5f926
+296, 0x9ffa1bd130c914c9
+297, 0xe6b93d5188a06452
+298, 0x9c520f67b97dfdf0
+299, 0x50c2a9973c08139a
+300, 0x59851ffaf533706e
+301, 0x2e5eff12d660fb5c
+302, 0xeaa1ff394919a29
+303, 0x9846f6684ff28cd2
+304, 0xeda270a0cd0cd09d
+305, 0xc0a319acd516a45d
+306, 0x6b5e013c4c4e1efa
+307, 0x76faab2a47dc7b68
+308, 0x10d5c15c81514814
+309, 0x3783ee8be5024e54
+310, 0xa4cdb957e5844ce2
+311, 0xd20ca72588a28e27
+312, 0xd7f16a0dcc7f77dc
+313, 0xd7e945262b79f2b6
+314, 0xe789e1213d3c62ed
+315, 0xba2cbc2fa27b9806
+316, 0x1d39cb2e5d96965
+317, 0x4526e9965c23273a
+318, 0x23b4c26eb5166240
+319, 0xaf0f404d70dc5638
+320, 0x8933061cb36229e0
+321, 0x69cec3a72559600
+322, 0xf891d9d259e44209
+323, 0x2e49b1c932ba1d66
+324, 0x333f1bc8321c60f
+325, 0x53bad1fb53c8c7cd
+326, 0x392f1562e71aac52
+327, 0xa9f6d47f02e8b0d7
+328, 0x39f9c3b1feec67d8
+329, 0x669009ed80083055
+330, 0xab063271b9538170
+331, 0x56678abcd6d3864c
+332, 0xde74b0617e61cbd8
+333, 0xbb4f24b9395938a6
+334, 0xc56dfbd143423466
+335, 0x4cb5a4a7ff276754
+336, 0xfb7b814159202ccc
+337, 0xf7bbd8fce5320160
+338, 0x218d0ad6343402e7
+339, 0xc8f1bb14eea39aa7
+340, 0x92d7e7256dcab678
+341, 0x8f13ff680747d33
+342, 0x7706151f442ce1dd
+343, 0xe902f2633656eb91
+344, 0x69cdf1a57b9424bb
+345, 0x9775cad17cd05d1b
+346, 0xccf9b27b7dd64f7f
+347, 0x1a912eedead72feb
+348, 0xc1e26527c077acbd
+349, 0xc71692a375f3c720
+350, 0xef1e5b57c2054419
+351, 0xa6b72781c1fc92c0
+352, 0x38318f277f1ef07e
+353, 0xe5ba934657bd23b4
+354, 0x792b67250dbc761f
+355, 0x785df3106f3610ff
+356, 0xfa80a926eae8d94f
+357, 0x2c0a95d66d691c70
+358, 0x5c7006e181d4a6ac
+359, 0x43e8b7dee8fe5379
+360, 0x87f509b549c83695
+361, 0x32599937b8fcd560
+362, 0xb9931fed6f066f24
+363, 0xf2a6ebcb697508ba
+364, 0xc0a3c1ba9a67600a
+365, 0xc8badd949bd0e30a
+366, 0xcafc4c1611c002a7
+367, 0xc4b5310f493c8f20
+368, 0xc51ff1b5bdb380ac
+369, 0xa9c73b25f03868f5
+370, 0x9edfdcc90d558540
+371, 0xd3d6333855161133
+372, 0xcbbd5d9ace516738
+373, 0xcb7e692a0f9fe6fa
+374, 0x6a21b61cd8fbb617
+375, 0xfc31d9554c519f86
+376, 0x76ea0f8ef0a354a3
+377, 0xadc8a62ec6b08390
+378, 0x66eeb2fe10131429
+379, 0x12ee14e3a238353a
+380, 0xbe3447a29c425e72
+381, 0xaaa368536635fb9a
+382, 0xad2ed0d14e4c413f
+383, 0x217b489205384ccc
+384, 0x4f22392204e47cb6
+385, 0x9b073c7bc6fc086
+386, 0x291abda48636aa3c
+387, 0x755ecf4077a77de2
+388, 0x34a5d238de636b33
+389, 0x8989d30fc37b325
+390, 0xd0b9fa38231bdf67
+391, 0x72461fe9b5055361
+392, 0xb25bd2fd4a1bfd09
+393, 0x9ed651e16289afac
+394, 0xd02d8c13301d3d2e
+395, 0x3d5bbed8ed8856bf
+396, 0xc44f594ac43fdbb2
+397, 0x9ada629d96abe651
+398, 0x901bec1095df9927
+399, 0x8597db9a0e29e2f0
+400, 0x97194dc163ca609
+401, 0x90c00a05f753a86b
+402, 0x426af3db2a4ac0fb
+403, 0x8acda542a69f22c2
+404, 0x674cf92ffcd455ac
+405, 0x6136bc48b45959d5
+406, 0xb90b38cd1ff9279d
+407, 0x4e6c9b5ecae724d9
+408, 0xcf30abb9df98cc0
+409, 0xddee0179acdaf635
+410, 0xafc739ce5a1e5b9c
+411, 0x646a8817ddc44ab5
+412, 0xd34ab42bcb8cdb93
+413, 0xdee4cbee62f81c86
+414, 0xc2221ab03185fdfa
+415, 0x7c9f570c313fab96
+416, 0xf1b366adbfee1326
+417, 0x7f096df1a4b284e3
+418, 0x41ed5c325a684c02
+419, 0x177d8012ec68bf1e
+420, 0x723ef03bbc899b8d
+421, 0x4b133232b7b75961
+422, 0xdf26aaf400d56c4
+423, 0xdfdb1c617a5a9794
+424, 0x9ff2f6d5ff5ce426
+425, 0xa902670b191b5b6b
+426, 0x6c9b17049b00578e
+427, 0x698c0c675043a17b
+428, 0x7a39ef3ca26d128d
+429, 0x684d4a467f04e43f
+430, 0xe2650c63fde538c8
+431, 0xd68d21f5390269e1
+432, 0x128f6856693a6f91
+433, 0xf16e391706e58b04
+434, 0x77487c06bb8213fb
+435, 0x6fcd5a620a122728
+436, 0x505c93b08cca8734
+437, 0x9a1132efe64d531c
+438, 0x7fffd4b9c31c6ecb
+439, 0x18974137a14e2c8
+440, 0x2aff5858af3e3dec
+441, 0x37c2c46feb19f7f1
+442, 0x69ff86ca141d00c9
+443, 0x94dabd547190bf71
+444, 0x5fbb969adddaa7c0
+445, 0xa0775e468c054ab8
+446, 0x632e6a69a80b7be4
+447, 0xba23d74ff6f179a6
+448, 0xdc80b0b9a70432a7
+449, 0xe012f4b1362a90f4
+450, 0x7f132473e42cbef
+451, 0xfb182eefc0dad8ac
+452, 0xf3fb712546ae256c
+453, 0x8ac69f2735229dac
+454, 0x564cafdaad77f80c
+455, 0x876c4ab2647401d0
+456, 0x2baf5f31018e5c1e
+457, 0xae1aaf82b13b7597
+458, 0x65944d8b8cabbb95
+459, 0xc7c01bfe1e0fbc00
+460, 0xf6dd901e7bbe8365
+461, 0x94e1050634114f11
+462, 0x47cab1cd353b7f81
+463, 0xa8775049b2696902
+464, 0xb186dc021a9110ea
+465, 0xf28259ce664afa40
+466, 0x67558a2beab5b7b1
+467, 0xb117438f266ec05e
+468, 0xf9da8468bb4cb968
+469, 0x2af756738bfc47b
+470, 0xd5842c66749f950e
+471, 0x953373bd7e97e4b
+472, 0x49a929314667f184
+473, 0xe64daee7102ddb89
+474, 0xe459bd3f9acdea67
+475, 0x5b9b04066b20c49d
+476, 0x5d82abef2d8487fc
+477, 0x4f6236c778a5ed31
+478, 0xdcee2584cd287c46
+479, 0x31c53b48310c8c84
+480, 0xb9cd90102e158a63
+481, 0xe57be85d8e42deeb
+482, 0x6582541962888815
+483, 0x845fd1538efbe310
+484, 0xaedc7db39263eaad
+485, 0xc0ea0704dea093fd
+486, 0x7d3e5c4a245ef295
+487, 0xfe651efbca41d1d8
+488, 0x5275c62cc60f26c1
+489, 0x4eb23a86fd35bd79
+490, 0xd3fccb059f30bb9d
+491, 0xc9b6267a16be945a
+492, 0x8fa963e267e0791a
+493, 0x64e7ef9097602cad
+494, 0x13a0d7ba848311ef
+495, 0x88878d9ebd8381f
+496, 0x4556a6258ccd7aa8
+497, 0x1321af0ffa57b4b2
+498, 0x271c1fc481143191
+499, 0xb09b8888fc206dae
+500, 0x1fdb714c88aa8318
+501, 0xdadb65138cf1a785
+502, 0x5c25349014f20584
+503, 0xdde1241c9c5a58cd
+504, 0xd93741fab3d630e1
+505, 0xe895c89a575d11f5
+506, 0x4f0b79334c81403c
+507, 0xd8a9850c307c591a
+508, 0x3621e4b8e12c9a19
+509, 0xb9db6231c6fa3793
+510, 0x659a34f2e8b13a30
+511, 0x3f7f65d4138a3ece
+512, 0xc68a3b4193c7ddb
+513, 0xfedb2ff6f59b308d
+514, 0x91a49785126b2707
+515, 0xcd897846c2da401c
+516, 0x3174aeb2ef45125a
+517, 0xfc93e91769875bea
+518, 0x20dc156b32d376bc
+519, 0x55b332e7395ae006
+520, 0x898b4d9889ab42d7
+521, 0x80e8b4fa60d67e52
+522, 0x751bb9a5c4f43263
+523, 0x4ef12c7d48b02305
+524, 0xe9b2f6da9932279c
+525, 0x28166b1bb0083fe
+526, 0xd66ede9e1175436c
+527, 0xe1600bfe3543967c
+528, 0x9e82c1de27917b7e
+529, 0x1a6a6a36eee4e0d3
+530, 0x4fd5e445d2ff89a6
+531, 0xb167da8a45a041b4
+532, 0x90421abd6d6b657
+533, 0xac2d084ffe30c155
+534, 0xaf6d71f79d0250a
+535, 0x2d2ba07fc90eaba2
+536, 0xee44751087f49162
+537, 0xd9a125da1f2bcd5b
+538, 0x1710b671e85149e2
+539, 0x6345319547b83ad1
+540, 0x68b4495241b6c0e7
+541, 0x74fa064e23915490
+542, 0x994254c5ef7484ff
+543, 0x767ce73cb64a3828
+544, 0xc44be811238ec768
+545, 0x49bcfd08e26f93ca
+546, 0x8506215301976fbe
+547, 0x17d72c4c22b48cc9
+548, 0xf482dc265fc66423
+549, 0x81515cd9ee472156
+550, 0xffc3716cab24bdce
+551, 0x4f272ed4fdd1cc65
+552, 0xa5fbe307e8a95706
+553, 0x4f489ae4435d271a
+554, 0xc32af641a427871e
+555, 0x481501cd6e76b046
+556, 0x7fdb10595e105959
+557, 0xc231d1fbcd7f9905
+558, 0x7f8af2f02dc96527
+559, 0xee1829cff220d07f
+560, 0x69cec4a31d43a06a
+561, 0x7ec964a98e091334
+562, 0x267d4751786ed827
+563, 0x3ff2a3fa95f49992
+564, 0x4db020a1aaa91126
+565, 0xf0a52fbc2ecbe5e6
+566, 0x22b4a6f29b420436
+567, 0x3baee23caf4332c7
+568, 0xf25b4154d1337b22
+569, 0xa1fc227fdb94fd5c
+570, 0x1c8d1858a14c79c7
+571, 0xdee05236f275cd72
+572, 0xbd2feb9b5bfea570
+573, 0x96d3d6d1189b458c
+574, 0xbfe1c60f48c2a834
+575, 0x590b91cf41e7f1c
+576, 0xa230cd61d4aace50
+577, 0x9b15a3dbd0129922
+578, 0x5a6cd3333e77adea
+579, 0x41825f9a09221129
+580, 0x713d20fbbb133600
+581, 0xde695bc734434fc2
+582, 0x80022a312ccfd484
+583, 0xfebe989fbe2d7f33
+584, 0xeacb2fc50aa3ce4b
+585, 0xb7bde6fa12d0db67
+586, 0xc5e52e74fd2fcf5e
+587, 0xccc74d9803ec269f
+588, 0x9f9f1bd42ceed664
+589, 0x5892c340c9b3e3f3
+590, 0x306260b57f475e42
+591, 0x20ba283b7feec8fd
+592, 0x8258f0179d4c1aac
+593, 0xf4f89922b5afe031
+594, 0xfdba45233cdd04a
+595, 0xce0f81c48bfd0d58
+596, 0x4b0cbebe17263b16
+597, 0xfee1fd8f3abf3ee0
+598, 0xfc5194839696ca5d
+599, 0xb2106fc284f8cfed
+600, 0x3be13181cdac454f
+601, 0x1dfea888cdb8755
+602, 0xe1df7e41e646b676
+603, 0x72e16234c51caa19
+604, 0x367a508bf361b3c9
+605, 0x3e8d10a40879846d
+606, 0x72540d5ed7c59a5e
+607, 0x49d00e4543ebd93d
+608, 0xf889e0dfb47c5a24
+609, 0xf6b166031a98e3f0
+610, 0x6ec9c4ac1f367f6e
+611, 0x81c322bfb5b4963b
+612, 0xe43618859ee305b6
+613, 0x5c0849263dff8bd8
+614, 0xca60ef338ca33c75
+615, 0x96dc953cd8229dfb
+616, 0xd33d8edd653f9411
+617, 0x398f97e5a17e9d21
+618, 0xa679fb8f7359cdd3
+619, 0x1a079b224822d2ae
+620, 0xd6f973d320aea3bd
+621, 0x8147d823ddca9fdb
+622, 0x7a15b31891283335
+623, 0x1ddff9012d02fbd7
+624, 0xf8822faf5627a945
+625, 0x41be97afe83c9b99
+626, 0xfc6c03f323a40cf0
+627, 0x40a3547fbda709fa
+628, 0xdabf18e62533b8dc
+629, 0x3df9047875ad057
+630, 0xaf3cb3461b5ce9a1
+631, 0x372859b34b493176
+632, 0x2fca17f51fa0f9eb
+633, 0xc7029f122beba37f
+634, 0x3f4e9ea4b4f4e36e
+635, 0x63d22717f8c9118d
+636, 0xc85fff0d3f30946f
+637, 0xfaf6a8680c3327b7
+638, 0x7cc6ff76d32736cf
+639, 0xed7066e55443e1d5
+640, 0xf8698e4c0986e3a4
+641, 0xfd8d1e5a65a86bae
+642, 0xe52f0012446decc8
+643, 0x5057fe700548fd6c
+644, 0x4529015264cdb296
+645, 0xf0bfc50ab6700a9b
+646, 0xf42ac8161980025d
+647, 0xd4eda173955d8472
+648, 0x37b042b1e5a10dd
+649, 0xe325a690ab12eb81
+650, 0x7fcf9f4d85db4127
+651, 0xbacbd13cba440c75
+652, 0xbaaab45fa3ec6721
+653, 0x621a8fb360e704d7
+654, 0x8e97eb1966466330
+655, 0xda7f0a06440024c0
+656, 0xe32b44177201fb54
+657, 0x81426b2259d306df
+658, 0xcc12d49f57a2a60d
+659, 0x43d840cb2c1b96f3
+660, 0x2f5190397dd5f5fc
+661, 0x37ca67cb906f8840
+662, 0x84bdcca3f926b24d
+663, 0x833e6cc4f6846646
+664, 0x3d046e6375412bf0
+665, 0x8678ca4ef2e3f721
+666, 0x62d9c438d39748cd
+667, 0x750fb4b000895aaf
+668, 0x7b760b873d0bfce0
+669, 0x3cc79186f7e7528e
+670, 0xe1e304d26bc14e90
+671, 0xe855ed09d88a5b86
+672, 0x99ae65ccd9d9ff9
+673, 0xd9bea1d3d04c6432
+674, 0x6871fc86fccce7a5
+675, 0xca6f22983e5d892b
+676, 0x7e29222169c094bc
+677, 0xbb6bb434e7225ce2
+678, 0x3b907684d5342268
+679, 0x5e5328163653a332
+680, 0xf56453da8399ea50
+681, 0x4691e0f9a0c6625
+682, 0x11a6cee0f014d630
+683, 0xdff740d94007b83a
+684, 0x6744032172a60cb1
+685, 0x8d311639fb358a47
+686, 0xe77ae7a767d74301
+687, 0x994184353b84ffd5
+688, 0x9faa8b6852c8b9ec
+689, 0xed5d549c40fd7b31
+690, 0x6bff41b829143500
+691, 0x95cd1f944b72360e
+692, 0x966e8976a79bd4f7
+693, 0x5f73608f2069b1f3
+694, 0x20c03970af7c205f
+695, 0x9a0e0928bc29f5fa
+696, 0xdc80d66b7ec92bc3
+697, 0x558745e23c9e413d
+698, 0x32dae13bef9e4398
+699, 0x1af3f745e7ca19b4
+700, 0x1cbb10f2f21417a2
+701, 0x37c03955556e6f6
+702, 0x852afdad0d2459fc
+703, 0xee72e7019e217ec4
+704, 0x6854606758560380
+705, 0x9284eba641a65dfc
+706, 0x446b92d6b8f3f53a
+707, 0xbe360ebdf10ded26
+708, 0x1048ecaabfe15b93
+709, 0x25d1762c447cca8c
+710, 0x6cf6151bdd266aa8
+711, 0x2e8fcc480b9d228
+712, 0xeb6b1cbea3c65d63
+713, 0x7a883b88ef974ee5
+714, 0x9f52f4081ea085f0
+715, 0x75fa5e7cbf0c55a5
+716, 0x2bfedfe0e029b818
+717, 0xebaec3bcde2e43b1
+718, 0xeaa3aa06bf8a67e1
+719, 0x4deacc579051e8c0
+720, 0xec44abbc73b62bf4
+721, 0xb9a339ae805270b7
+722, 0xf9eb47d4cba2877
+723, 0x6105cdeb6a7e678e
+724, 0x242351322affd465
+725, 0x111fe30cf81b2f70
+726, 0x25b5ae64c741738a
+727, 0xfb425508ba96049e
+728, 0xe0fbf9619e3a1aee
+729, 0xa0fcb4f5f0c32ee9
+730, 0x1e69787a387b30a
+731, 0xe89a8480884263d9
+732, 0x4c02fe1f82aac874
+733, 0xb576e8a44017bee9
+734, 0x5e7b98878c6537ab
+735, 0x6d291feb307f3740
+736, 0x7d00feb09e768b54
+737, 0x71bb0170d659119a
+738, 0x7bb2ff7d0a61dda3
+739, 0x2c6a16824290b7f3
+740, 0xb96623628a2917ea
+741, 0x14489300ff071e92
+742, 0xdedd6422224f3748
+743, 0xa6e1071c454da244
+744, 0x1c4b1edef803ffec
+745, 0xa5f8e7c79d02be10
+746, 0x9b8309dddcbd21bc
+747, 0x6f57e425d2808563
+748, 0xd7d49cab22729386
+749, 0xd0dab40fd019b301
+750, 0x6808b10401cda8fb
+751, 0xfa51b53ceceb08b8
+752, 0xb90e4574b2745b68
+753, 0x470707ab3da1f1a2
+754, 0xbc76e852147fe684
+755, 0x82f7e418e4454b7e
+756, 0x6aa5fec0a5dbb4b9
+757, 0x2695d285a10e05c2
+758, 0xd15219b5dcc6db09
+759, 0x8ece31d881c4e1e5
+760, 0x1bea39be5b09c080
+761, 0x19e1d4897394d0f8
+762, 0x8bb735c6dcade9e9
+763, 0x5df3789e52d93a64
+764, 0xcd6aae13791d95df
+765, 0x188ce0105b17920a
+766, 0x3fa30c09840f615e
+767, 0x7c201465bc6301e4
+768, 0xa9a00e2757807982
+769, 0x122e0fc0c79782fe
+770, 0xabff396bc21271b
+771, 0x7d54d41d59c99fe4
+772, 0xe2d5b1393b081928
+773, 0x45165a925412ed4e
+774, 0x96c945ed58ba2bab
+775, 0xde05a1d6fb9ced45
+776, 0x496cad57600fe9ff
+777, 0xc3846b63bfc1062c
+778, 0x9055ccd5f729b1f7
+779, 0x8fa87030e7e623a4
+780, 0x7e6ee59d4fb11784
+781, 0xb5b151c0d892955e
+782, 0xeeaa87699ff69dfc
+783, 0xa6d485e04ce2dd71
+784, 0x69c53b89eec70119
+785, 0x3732533c7df25f53
+786, 0x275d37a0c68e7a42
+787, 0x3a88f16ac812bad8
+788, 0xb0f92536c7c763
+789, 0x27a32d261274ee83
+790, 0x3fd5ae8a771adf89
+791, 0x23feb68f4819e4f
+792, 0x4d4c7be0e84aa024
+793, 0x41a80d994fc0a41c
+794, 0x718321ae9282c3b3
+795, 0xd551e149c01af06c
+796, 0xbcb93735c6eac744
+797, 0xe59f03655f9180f8
+798, 0x6e96a0431ed2e0cb
+799, 0x5866d0755ecf3c6e
+800, 0xd9f473c16bbec85f
+801, 0x38b2070194506205
+802, 0x98aaa714c80a21af
+803, 0xdb7853e1515cb5b
+804, 0x32532dd0c0e1920b
+805, 0xf5d440e12b584cfc
+806, 0xe67397ec029cda3e
+807, 0x2d51f19fcbc86346
+808, 0xb5e46840c44c80b0
+809, 0x6d39c237e90744be
+810, 0x3535938a21e6e293
+811, 0x7b8a87d2b539e50
+812, 0xf4e74d0346ccdb48
+813, 0x1640fb85b5f11965
+814, 0x2a99ba02ff6b5ccd
+815, 0x12dbbd81a6ca75ad
+816, 0xff72053bbfd9490f
+817, 0xf5470d1e0ff5888f
+818, 0xd7d3e1ca8d79382d
+819, 0xd437182225fda535
+820, 0xde44396868fad24c
+821, 0xeafa4c86c0c578b4
+822, 0x788a1e34983fc51f
+823, 0x396563f750981e64
+824, 0xeee9e79937487d52
+825, 0x12871390ffe443a9
+826, 0x96b07429b4a54778
+827, 0xb0506605d66bebce
+828, 0x1b5878bc242f0158
+829, 0xea46c8e2d9ca3dbe
+830, 0xa94a8750612bc68
+831, 0x864ccfa5796f590b
+832, 0x4d1d2609563b8063
+833, 0xec62387e7f258abe
+834, 0xb2726f3d37ba75b1
+835, 0x2067494d0dd41024
+836, 0xf75839382e176d99
+837, 0xf0c83dd9ed0aaf23
+838, 0xfa8a581e28780483
+839, 0xc461e40cda6d4ba4
+840, 0xaebdb6c7da47946b
+841, 0xd380bbdf27718424
+842, 0xd31504078e3a9a9
+843, 0x4fc0eee024e9a5a9
+844, 0x18714e84611ae719
+845, 0x7503c0ee7ce5608c
+846, 0xef1abc4a7543b398
+847, 0xd1e7ad19597d9cb5
+848, 0x77fb8e61dec1dff5
+849, 0x6d6504f8f1cd19ff
+850, 0x7d7e1a6b8d21b29a
+851, 0xc0504f78e1744ba0
+852, 0xbe3aefe760c2025f
+853, 0xbeba2fd08acd9166
+854, 0x5c140d358435d3b9
+855, 0xc550467f426d4bb9
+856, 0xfcf1c8674b415f75
+857, 0xc81721303ee733e0
+858, 0xe4b0c096d8c54e7e
+859, 0xa963e1fa39f44bc
+860, 0xfc6fb6ad0317aa76
+861, 0xdf7c4217eeb378f9
+862, 0x69639f8b6c1c765e
+863, 0x23d8874dfac843f4
+864, 0x323e6cfed1af5406
+865, 0xdf34a5b2df24c44f
+866, 0x52c88f39e1f1017c
+867, 0x9b780cb0ffd8e0ae
+868, 0x17bdfe024bf483fe
+869, 0x1bdc2d6b57afb0d7
+870, 0xe5cfe8cf4f301238
+871, 0x466caae45214f84b
+872, 0xefa9e39d81d0f263
+873, 0xf9e330742b518177
+874, 0xea36033c02f97e71
+875, 0x37f90271cfa76be9
+876, 0x313e5ad81eb57d98
+877, 0xc0741d6410e19347
+878, 0x77567253b48ea919
+879, 0xa0b196d776905b46
+880, 0x81848e866c958c22
+881, 0x5defd26f7e313de1
+882, 0xebbf740f85d0a413
+883, 0xb43c6ca7dda9c7c3
+884, 0x3a38024f6076bce1
+885, 0xc9a4d739dd7a58d5
+886, 0x4a0036e594c30291
+887, 0xb67d467a13271850
+888, 0x26d4333f67ec5658
+889, 0x8683441959b6fca0
+890, 0xb4c3173d217788e1
+891, 0x3fca2876508b0037
+892, 0x4fd7ac0912a08d26
+893, 0x3990c299fd77d3cd
+894, 0x388bfe456f0ee713
+895, 0xa17d56851d0aa9ad
+896, 0xae6e173a38e92688
+897, 0xcae6f7387868f4c0
+898, 0x5deb567e87b682ed
+899, 0x5bb2a3cbc6ad9aa7
+900, 0x4054518b25a4e546
+901, 0x8399534e3156fcc1
+902, 0x288ff48845b1cd34
+903, 0xc7d6f2e48f1799d0
+904, 0x968a3ed47b71e9c5
+905, 0xc06011209519bbee
+906, 0xe2a80df93233bcf5
+907, 0x20b9afd489292293
+908, 0xf0ce32e84bdf040a
+909, 0xbed405bc7fe1e795
+910, 0x86f7b1542f6b195e
+911, 0xcbb6cb657318a436
+912, 0xcabf1276e3e6d85a
+913, 0x42a331a4b5939d3c
+914, 0x80cfa20e1ca1d0fa
+915, 0x768bb2ab2504a2cb
+916, 0x38a6f71b6865c85c
+917, 0xdc4142ff4a656c94
+918, 0x91541ea1cece2095
+919, 0xbe03be2fc0073de0
+920, 0xe21d0d35ce487214
+921, 0x4681e310b4117bd7
+922, 0xf2253c6efd0ed606
+923, 0x702db3cd3ba7c127
+924, 0x8d3175ccb5e08f38
+925, 0xdafca1a22f02d177
+926, 0xb6fb797078eed6d6
+927, 0x10120f45ab02ea09
+928, 0xfd4cd6ff70fe60d6
+929, 0xaf70101012b33e44
+930, 0x6e4321ef1a47aed2
+931, 0x859676a49e1dca4f
+932, 0x8065316b96ff29a0
+933, 0x44d05376ed2d0fdc
+934, 0x7343def61d2425cc
+935, 0x86113b555152aac5
+936, 0xba339a0e137c5ce6
+937, 0x1d2d89d9de5460d8
+938, 0x7ed9d48c61257119
+939, 0xcad2b91ab20da148
+940, 0x656377284c5e195c
+941, 0x94e734e8a480a4a7
+942, 0x5bdacbc607ec7c4f
+943, 0xec1241717db1ad5b
+944, 0xe6eb7fbcf5b4b66b
+945, 0x3512345a3554e6b6
+946, 0x58c77d926e9a528b
+947, 0xf3e782be535f9b9
+948, 0x9d3b3a53ea1530a5
+949, 0x3df1eddab09a2ac2
+950, 0x86440868ee975e20
+951, 0x35e2f24867978c7
+952, 0xd3a6219dec1a447d
+953, 0x4427eaeeb50643d3
+954, 0x1eac58507e33223e
+955, 0x10fb299eab3112ac
+956, 0xaa01a8b779062117
+957, 0x552c4559a7e5c22c
+958, 0x2e10ac501d21242a
+959, 0xbabf9866c8d7d061
+960, 0x94f03b79de712060
+961, 0x4a70ef01b76bf68e
+962, 0xd1fcf4d2226ae986
+963, 0xcc53d27dcb2ab8bb
+964, 0xe169d46e9a968cd2
+965, 0xdd3baeab560e1eb7
+966, 0x62e325462270d89
+967, 0x717dade9cf46c1ff
+968, 0x229552ce0bb04970
+969, 0xa6ebda4d2eca3cbc
+970, 0x80d3bd7426882137
+971, 0xfbc3243079309847
+972, 0x664f4a88f2c7bc55
+973, 0x750baa49d93df131
+974, 0x8f0a87416f41c64f
+975, 0x5d01ca38b0484512
+976, 0x743fdfbdd79e82f3
+977, 0x69c3c2f9296fecaf
+978, 0x3d945260849578e7
+979, 0x21aadd4d1956a540
+980, 0x17a2d7868afbf606
+981, 0xa945ff7af593e961
+982, 0x499c7abc8df892fc
+983, 0x599c1a937b547e43
+984, 0xc6f0c1d6eec5cf12
+985, 0x425c576116b8bf5d
+986, 0x5a9d64a33ba615a6
+987, 0x85f1341ef79fc27f
+988, 0x75c151fd5787305a
+989, 0xf56789cbc4c1a1ed
+990, 0x1d547a0b47eab748
+991, 0xccc539d7a777e60c
+992, 0x39d3177b7f18e15e
+993, 0x9d9911afa8441757
+994, 0xe163b0cae65e074c
+995, 0xb75ff4c843626bed
+996, 0x696089f87bf020b5
+997, 0x78c5c7971b74ce1e
+998, 0x2ed5aa6e489c3684
+999, 0xaf1b049e483011c3
diff --git a/numpy/random/tests/data/xoshiro256-testset-2.csv b/numpy/random/tests/data/xoshiro256-testset-2.csv
new file mode 100644
index 000000000..b688fcb2a
--- /dev/null
+++ b/numpy/random/tests/data/xoshiro256-testset-2.csv
@@ -0,0 +1,1001 @@
+seed, 0x0
+0, 0x99ec5f36cb75f2b4
+1, 0xbf6e1f784956452a
+2, 0x1a5f849d4933e6e0
+3, 0x6aa594f1262d2d2c
+4, 0xbba5ad4a1f842e59
+5, 0xffef8375d9ebcaca
+6, 0x6c160deed2f54c98
+7, 0x8920ad648fc30a3f
+8, 0xdb032c0ba7539731
+9, 0xeb3a475a3e749a3d
+10, 0x1d42993fa43f2a54
+11, 0x11361bf526a14bb5
+12, 0x1b4f07a5ab3d8e9c
+13, 0xa7a3257f6986db7f
+14, 0x7efdaa95605dfc9c
+15, 0x4bde97c0a78eaab8
+16, 0xb455eac43518666c
+17, 0x304dbf6c06730690
+18, 0x8cbe7776598a798c
+19, 0xecbdf7ffcd727e5
+20, 0x4ff52157533fe270
+21, 0x7e61475b87242f2e
+22, 0x52558c68a9316824
+23, 0xa0bd00c592471176
+24, 0xfc9b83a3a0c63b9e
+25, 0x4d786c0f0a8b88ef
+26, 0xa52473c4f62f2338
+27, 0xe9dc0037db25d6d9
+28, 0xfce5eba9d25094c3
+29, 0xe3dbe61ee2d64b51
+30, 0x23f62e432b1272df
+31, 0x4ac7443a342c4913
+32, 0xc31cf1a9658c1991
+33, 0x290c97ffce918b1d
+34, 0xf54455e02e90636a
+35, 0xf57745758bb8f33f
+36, 0xe5e1b685122823d9
+37, 0x2c16cde0fd8097ec
+38, 0x3cdebc44a5bc1936
+39, 0x6833bafa723c2dbd
+40, 0xb6fa6c4ba1d3d39e
+41, 0xe5b932b656c2edc3
+42, 0x9cf0b6121615c9f
+43, 0x214e25d57fc636d5
+44, 0xcf3d1721806e2537
+45, 0xcf796fc6335ddc02
+46, 0x353c8b86489b0322
+47, 0xfc4865822547b6aa
+48, 0xe8c93d84ee8b3f8c
+49, 0xd1b42120a323f2d6
+50, 0xa73a11d247ff36b2
+51, 0xae42236958bba58c
+52, 0xb622679e2affcf3a
+53, 0xcc3bab0060f645f4
+54, 0x2e01e45c78f0daa7
+55, 0x8566c5f16be948a
+56, 0x73beac2187e1f640
+57, 0x8e903d752c1b5d6e
+58, 0x5b34681094d7511d
+59, 0x70ebad382047f5c1
+60, 0xeae5ca1448d4e9cc
+61, 0x3d2d62775b631bd5
+62, 0x8cb72ebc5b4f7dc3
+63, 0x99c2939ea690a80
+64, 0xf9d3061a3006c84b
+65, 0xd0872c394d734a5f
+66, 0xbf768c2fb70d5c2a
+67, 0x9b5a7e27e4c57259
+68, 0x8e00b050a0489404
+69, 0x72ae4545fe9d40f3
+70, 0x2bdcc8dcb50cf5a
+71, 0x7b20239fe07cd664
+72, 0x37b037a8ea138f13
+73, 0xa52f51f9e9cd65b0
+74, 0x5ee0b72fd581557a
+75, 0x527ebb9ac92c6fa7
+76, 0xb64f03fc892955da
+77, 0x972c4feb529a9045
+78, 0xa5ee146b2461a795
+79, 0xaaef1049a5bb9b07
+80, 0xbcf5f38ab6cfe9
+81, 0x16398fd1538acdd
+82, 0x8a0744fd7315cae2
+83, 0xa4bf1e39de6657a6
+84, 0x685247449d0de2ef
+85, 0xa48d5c8c364fb1dd
+86, 0x7fbcaafb1f2b65b5
+87, 0x96f0967f55ddec48
+88, 0x30d43cfe4a788a1a
+89, 0xf7b15bed8038c711
+90, 0x8db82a6db9261a2a
+91, 0x94eb6a77a00e5b2e
+92, 0x3e19490dbfd221a4
+93, 0x9644e15b5d0a6b54
+94, 0xe235ca3fdaeca1a7
+95, 0x2db8e0001ea7c79e
+96, 0x1d82fb1d7674fc75
+97, 0x65039b3b4805404d
+98, 0xd73a9fc3e975791b
+99, 0x3cb72d021fba219c
+100, 0x134f43cf382ea87a
+101, 0x32806c8d66cf621f
+102, 0xaaddf99cd62686db
+103, 0x1b3e5fe6476a54d8
+104, 0xd0a2a5e803c27068
+105, 0xacfb9437a3b64c17
+106, 0x514a55b2ce7f4982
+107, 0xe0b9ee39938c909
+108, 0x66d449a98f1052d2
+109, 0x639a3b248f7b37e8
+110, 0xf0ef1ed4a65619a5
+111, 0xf010ee5ad7e74a11
+112, 0x3fbfb63d884eca59
+113, 0xdbed473e4efad8bb
+114, 0x49c9bb8f88e373e4
+115, 0x251f496458b6360c
+116, 0xd91a4850fddb72cb
+117, 0x610f58fad3c217c1
+118, 0xbcb05e51100ad235
+119, 0xdebf8d6ccb4a94db
+120, 0x297499be7e8fe7cb
+121, 0xade854104ecd6600
+122, 0xe8924c68f96b97ba
+123, 0xea4332df583b4cdf
+124, 0x3c5950e1726a6684
+125, 0xe78baf12ad096b30
+126, 0x130e9517756e2908
+127, 0x2519a50a14a2bdaa
+128, 0x548b96fa23c310bb
+129, 0x689bea6fcb7a7b18
+130, 0xe500c168143be7b8
+131, 0x6615695d45714ed3
+132, 0xf58a87a6e82fcbdf
+133, 0x77d9730cc4ebf311
+134, 0x9b3a449299c50530
+135, 0xfb5d93b0b60f022b
+136, 0x31bb49a47b615ca7
+137, 0x5be9713f591556b
+138, 0xec54b51a1185183c
+139, 0x4dca5482711b4718
+140, 0x4cbe1b130e66cc8d
+141, 0xe5ab874359671f11
+142, 0xadb342dee0eaaae5
+143, 0x7a9f5af1a3e89a24
+144, 0x83656d5ed37512b6
+145, 0xced3c2b8c231d286
+146, 0x575139132aafc520
+147, 0x2fc986b84ae150d0
+148, 0xf1e782d83e9bc699
+149, 0x1855c5fab454eb48
+150, 0x8c397cc4dfbdac0
+151, 0xca53a1df39daca62
+152, 0x8df17bc285c6c2d4
+153, 0xcc409e9c492ef29e
+154, 0xc6609bf8eaeaf753
+155, 0x4f0e6d330e6647cc
+156, 0x32a255fd34f2b58f
+157, 0x26352ca3cc29b31d
+158, 0x695c88b11a7e549c
+159, 0xd91ec977523e201a
+160, 0xd8e5a42958325ba0
+161, 0x481223fcbeec1f35
+162, 0x601cfbb9aad67313
+163, 0xfdcac7d3cb1091ef
+164, 0x7fdc76c0a076d6fd
+165, 0x394266448a75927c
+166, 0x63243918d6fc4774
+167, 0x6ccfae907e52cc2e
+168, 0xd4ce6176046ae4a2
+169, 0xa9818d710c31aa3
+170, 0xb8e803b82ca561b9
+171, 0x620b905a8425a1cd
+172, 0x2443dea6bd2bd617
+173, 0x447fd94cd80faf23
+174, 0xd4f30e2a5c7767f2
+175, 0x11298de19077eccf
+176, 0x35154fb0148fa69a
+177, 0xed42b9c24ebc4d19
+178, 0x422724f98f4c3a1b
+179, 0xd81cc933854afa52
+180, 0x54e2a03657411d03
+181, 0x8f12d5fcccdafb4a
+182, 0xd91ebb398426414b
+183, 0xb5555a96d9221341
+184, 0x6073189316d5f1f
+185, 0x8a488d8d9c40366a
+186, 0x109f57d19c71381a
+187, 0x4e043cb3d78b4fdb
+188, 0xa541464ecc30b27d
+189, 0x15c2bf30d64900
+190, 0xa65cd77083ee4f66
+191, 0x1b98efd8729f2197
+192, 0xe954f9556e7cd0db
+193, 0xb775e8ed94ede03b
+194, 0xc3ef1f33db52eb8a
+195, 0x21eec6afc3a045bc
+196, 0x3d09338405d07ee1
+197, 0x501d08ca80daedff
+198, 0x855f69bea1e262cc
+199, 0xc88e6c97b5071d6c
+200, 0xad42750a0f79e135
+201, 0x19171caa21061657
+202, 0xa337869a65c8d18f
+203, 0xfb0cfae4b3cd24a3
+204, 0x43140ea8817faf71
+205, 0x895807fdf0d19712
+206, 0xb0c14c560e178c2d
+207, 0xc47b4af3c3bb4789
+208, 0x60cafedf6696b7a2
+209, 0xf658b394f9697989
+210, 0x45d29b40a0ca3f86
+211, 0xb881cbe06cf6c2e3
+212, 0x2f045611c5d42ecf
+213, 0xf011ca853c07b2a6
+214, 0xe078befb5dffff49
+215, 0xc2d1b7728fbc0ef7
+216, 0xb3ee6d8225161ee6
+217, 0x82e51268e2c152e0
+218, 0x6d79b320e5c33a15
+219, 0x1be56b3144ecab7c
+220, 0x8e341dd781b3dffc
+221, 0x50310327c0b03198
+222, 0x22ab06d620970b0e
+223, 0x6b542de2f5625eb
+224, 0xaacc9d5de070b881
+225, 0x21581365a4307e9c
+226, 0x1a09b3443a155c66
+227, 0x2941d8614648c4cc
+228, 0xbc4175b682a7f884
+229, 0x9cc92ed166c9cf23
+230, 0xc765ebe7eb3911b2
+231, 0x2d169ff7cc4369ee
+232, 0xa3070da6835f0a0c
+233, 0x827d253009c5d376
+234, 0xf23489deaf0450f2
+235, 0xc5e5b1ba6d4550ec
+236, 0xa42ce77e33e206a3
+237, 0xc096f2576edc6a17
+238, 0xc4fa32113d4200d
+239, 0x9bf6baf90bdf4ac
+240, 0x47dc4d9bb5714a26
+241, 0xd58f0327551e948e
+242, 0x9b1926b404a93ae9
+243, 0x6034442c56b4a50f
+244, 0xe29e9c6881a89f9b
+245, 0x79e49c426f3d4f3f
+246, 0x75ba2077148ff864
+247, 0xf5dec8c46426e9c3
+248, 0x6affed5e72eacc9e
+249, 0x1e4dcd0029679920
+250, 0x6470439685e44054
+251, 0xb156aa42e8413254
+252, 0xf6529f57a03df828
+253, 0xd706ceb3bd1c5f22
+254, 0xf8a3b615eaf44c9f
+255, 0xfb33215a60fc88a
+256, 0x53b93d040f72e76f
+257, 0x4f67360a5c6ed447
+258, 0x600e87c4cbe6910f
+259, 0x729ea44a3706a389
+260, 0x924cbabe379237ec
+261, 0x618aeada6735f6cf
+262, 0x12b4a8b32ecefaef
+263, 0x7b129ddb43b182c
+264, 0xd5466dc1e1de15cb
+265, 0xc2e35a196a6e1efc
+266, 0x8cdbacc1fc81c786
+267, 0x28b96b91b1ca9672
+268, 0x10e2a0174fc6f81c
+269, 0x35ae5c9a74f2e2d8
+270, 0xc18f6c052b7f28e4
+271, 0x4f0abb08fa0bc2d1
+272, 0x84ab0e1b7c7cd062
+273, 0x29dca86fd5f5927d
+274, 0x50fb63fccba90590
+275, 0xb7a60466af0de98c
+276, 0x47baf40463bbd343
+277, 0xc72942184061bb8a
+278, 0x2d55077237a2ce6e
+279, 0x2f6b743bc35768e7
+280, 0x96975e80bfd6f74e
+281, 0x77f334f2537aba60
+282, 0x8364264d2947b429
+283, 0x7e62c258f591189f
+284, 0xe1a0962ad2d4f7ea
+285, 0xf7a81d56b651d434
+286, 0xcbb9abcb6ec96876
+287, 0x7028c3ceffdccec1
+288, 0xa0049e182130928a
+289, 0x79dab180c238f06a
+290, 0x1eb3c704ecfa28db
+291, 0xf9db38cf45524135
+292, 0xbf8f3bccec0609a3
+293, 0x5f0f2a25bb3ed38e
+294, 0xe365cff62ec9287f
+295, 0x9f5481118acd2a76
+296, 0x99296bb12e697f0a
+297, 0x76aaf656bbbf9067
+298, 0x7d81ce20bb4461cb
+299, 0xefb436add3cace0f
+300, 0xf3ba4a29ed722849
+301, 0xc4cde39ff82317d
+302, 0xad2bc44d417453af
+303, 0xb36a704f170f7edd
+304, 0xcdf268d6b5e2b5fb
+305, 0x91aed4730adf51f2
+306, 0xeb2a37825e8a3de
+307, 0xe79d586186766a28
+308, 0xc8bc6d8a5660356c
+309, 0xafeeee51b23f4a5e
+310, 0xfea1ecb5f9b17114
+311, 0xf0882ad449c3a225
+312, 0x8c0d387e9b4bbd68
+313, 0x39f2c8fdbdd00e8f
+314, 0x830705f2260c2ef2
+315, 0x9bff6be123cc50bf
+316, 0x99e33829b97434e4
+317, 0x6059a38e8957661f
+318, 0xa77e6d06957108cf
+319, 0x1e719fd3e756823
+320, 0x4564dd6be166e176
+321, 0x6f6a8c540e054563
+322, 0xc800237b21dc0e2c
+323, 0xc6c3f2586f8d3062
+324, 0x85c469664e405a28
+325, 0xf5771300e8da6169
+326, 0x5f79c23a5e6807e2
+327, 0x593bbb0ce26b72b1
+328, 0x7e2e976e8309dff5
+329, 0xa543c50aecd30c5e
+330, 0x7b71758289d403bc
+331, 0x4a01dbff8cf37014
+332, 0xf1dee5472a53176f
+333, 0xd82c78d69f2bef7a
+334, 0xb63903647ded6604
+335, 0xe695634a32b0d1fe
+336, 0xf89cec17a9792c77
+337, 0xcbb131921e8fad4d
+338, 0x9425521c6c62076d
+339, 0x18fa2dc92d99a3bc
+340, 0x5d84f4a98055086f
+341, 0xcaa5980ecaba579
+342, 0x2fd8a209612e2b2
+343, 0x1be8b333fae80866
+344, 0x99cd4808ba7c60f1
+345, 0x107242d94ac9d491
+346, 0x873838793d69cb0d
+347, 0xce87b21b6eeea0a5
+348, 0x6831420da8fb877c
+349, 0x1f51fe6670631366
+350, 0x9c093d89ef323dda
+351, 0x3384d45cc9aec1b9
+352, 0x144970e9a0e6f741
+353, 0x3d8deffd6db78721
+354, 0x272f876c2821800a
+355, 0x66eede1f8eb0bba9
+356, 0x6b85a48c6fd8dfac
+357, 0xdeed765c9682da9
+358, 0x5956688ac942fe9c
+359, 0x408147c1fe103dba
+360, 0x8a5545b07bd7d483
+361, 0x2c8379adb00ea5c2
+362, 0xb9f96c9acd18c563
+363, 0x18e6e515e8c11ad3
+364, 0xf4c78395a36665f3
+365, 0x9319b999d50f42f6
+366, 0x1d9e89e8d5e22c8e
+367, 0x7df15c14581535d2
+368, 0x214e3cf405b8b36f
+369, 0xe11a168e3a824980
+370, 0x74998ef104966497
+371, 0xd6fc353bdca37cef
+372, 0x48a55220b4fa6e1a
+373, 0xbe2c7cfc7c08dc03
+374, 0x26c837223b6cfd46
+375, 0x22163b501aed055d
+376, 0x946537d01e261110
+377, 0x39b4c0b78a79402c
+378, 0xa68b2d66140ef79e
+379, 0x8dc84a722b56fd9d
+380, 0x6f32f10229bd5c83
+381, 0x722074979bca28dc
+382, 0xd942d9911e43d52
+383, 0xf720ad0e5adada4a
+384, 0x69fe38d6baa562de
+385, 0x29a7488cb00fbc49
+386, 0x4d40dbe4a23b6c94
+387, 0x6bb39808bbae9d62
+388, 0x8b80231a7369e915
+389, 0x14bf8e755f80b050
+390, 0xf19bb00604d00336
+391, 0x552db8387eea31a7
+392, 0xe9ec067b59dd95e4
+393, 0x3d71f663886c520
+394, 0x97bb54095cd331e4
+395, 0xea3e829f0695cfc7
+396, 0xa93188e41583162f
+397, 0xeeaabd3e3df2f07c
+398, 0x291f70992ab1c5b5
+399, 0x55183a8b5857a080
+400, 0x7df148caba2c4978
+401, 0x84f178764bffc05e
+402, 0x5acea77fb3139b5e
+403, 0xcf57693ff3aa5f39
+404, 0xa0867abf8c89ce6
+405, 0x597f8192569e2971
+406, 0xf90a8e47c1271e18
+407, 0xbe5346e3fd0c12a4
+408, 0x524aeaa307d4b03b
+409, 0xef3d68937d8270c8
+410, 0x3e73d03007156d55
+411, 0x94cc96dfeb586897
+412, 0x14e7a22da35e8923
+413, 0xca6ecc61d3cea9bd
+414, 0x6044eca5a760cfb6
+415, 0xf4ed4f4f21933f13
+416, 0x99b923d7f9925de3
+417, 0x394b054ab147ae41
+418, 0x9afb74bbca1dcec6
+419, 0x830b9ee9e52b9234
+420, 0x83712e27c87cc4c6
+421, 0x7f025017de598df8
+422, 0xb3ea4ab92495a788
+423, 0x602a7c66750a2047
+424, 0xa15ca212f5002047
+425, 0x8aa5d8a19b1b7efb
+426, 0x2852eaeb46dd9d21
+427, 0x605f261b8b77d3ee
+428, 0xeb27c54d4359e1fc
+429, 0x77e4aa530fbb27c8
+430, 0xaf06ddf2d74745bc
+431, 0xe88964e4b8d79ede
+432, 0x2192553c0ce6a4d4
+433, 0x90997c5c0cf3b6ae
+434, 0x1153fc6436d48bb2
+435, 0x1703c60eb24cf506
+436, 0x116d8f4e35d51cbc
+437, 0x5045a10f0131f6d0
+438, 0x1fbb76ef3c622e03
+439, 0x7d33bb57dcf79365
+440, 0x1ef362b02c379673
+441, 0xdf7a4a6801ca903a
+442, 0xc784df93dcbb07f1
+443, 0xbc566896f2d86db9
+444, 0x72a169884d76aa42
+445, 0xcb65ab4ad4c8a6ba
+446, 0xd810c9a3ee62ed3d
+447, 0x7652322c4f6520d6
+448, 0x3ad4dc2bd6e4c8dd
+449, 0xb2269d6e73a22c6c
+450, 0xcbfdf90c34925001
+451, 0x2bb66613fbf8044
+452, 0xae9c53e815bc69d1
+453, 0x452d886b5a7407ae
+454, 0xa7f3f05dfb111951
+455, 0xbe05cb088f4dc330
+456, 0x9b740a460b6ed662
+457, 0xd77a324b60f8c74
+458, 0x60ae94f69dce3f29
+459, 0xd04859db7833712a
+460, 0xb90030c4a70c588a
+461, 0x25dd21f6ac7df8d7
+462, 0x162154fcf4832a15
+463, 0x15947a2bbf844bae
+464, 0xa20559f3a662a753
+465, 0x6dce918dd48cad0b
+466, 0x32c5a086331216f4
+467, 0x3a683208ae4f86c4
+468, 0x1ecc2982d1720167
+469, 0x2b3017d572f5c7e7
+470, 0xd7861e549dc1fdcf
+471, 0xcead2c572db0b00d
+472, 0xbbb4afca7e873a92
+473, 0xada92286d14a0d26
+474, 0x7af00766c03cfd0d
+475, 0x2353443fbef8f013
+476, 0x35291d9ea26217d9
+477, 0x9d907261f3f7ea54
+478, 0x6f11649f6c3b69fd
+479, 0x36d9e3bf31b6b209
+480, 0x5f420540094e6bb9
+481, 0x980dc001315d9d33
+482, 0x1e6023baca982809
+483, 0x28441f8357769aa6
+484, 0x4acebf5fd0e84d43
+485, 0x9991e19a0f1ffddb
+486, 0xea4f7c944b325d2a
+487, 0x9e44a24cb37572c8
+488, 0x2949063600779260
+489, 0x313e58e1433ffa40
+490, 0x6eea07e56604152e
+491, 0x47dee53a41fe61c7
+492, 0x21e6dc482e5df531
+493, 0x4c43131087191e79
+494, 0xb378e632ee28fb31
+495, 0xc1b106afa1c14816
+496, 0xba150956e0c630bb
+497, 0xc5b64d8037dbaab6
+498, 0x47325510456ecc3
+499, 0x61a6f425ff2b555
+500, 0xabb9fcb3865a8ce0
+501, 0x7eaf52f3aa10b66f
+502, 0xd91cf6b8600c7115
+503, 0x18eb54dcfb1b20fe
+504, 0xc8911ada29a3162e
+505, 0x6cb29138cb1ac68a
+506, 0x4d0e9884ade85482
+507, 0x4cad40d37b3ec8f7
+508, 0x9467d7a7b34753a6
+509, 0x45f84f5e5a26175a
+510, 0xd8753f7613d5ce77
+511, 0x86d400a246e8d128
+512, 0xcb8946c9f2c10785
+513, 0x89cb7c5c5ab35ff3
+514, 0x7bb60eaebc69a3ad
+515, 0x534f554712b34d6a
+516, 0x5667fa5c9b731343
+517, 0xeadb76ebcdeb49b
+518, 0x3485b0afe8caa42e
+519, 0xc78c543b4603f643
+520, 0xa8f3fc1217b9b77c
+521, 0x44ff6333a229924d
+522, 0x426e31b858cfcbd1
+523, 0xed5964b45b66718c
+524, 0xac18d6cbcbca89ee
+525, 0xc78a8bf4beffcb0e
+526, 0xbd0d95b77da79de9
+527, 0xac7b69c368ad88ff
+528, 0xbb729daeb9f32b7d
+529, 0x6d5dcb59284675b
+530, 0x4aa9af065367853c
+531, 0x40de557a4730f8dc
+532, 0x6b35765ddcb83237
+533, 0x7c4cdacf0801f9aa
+534, 0xcd723c55ccc75d2f
+535, 0x86c67f52807c3f64
+536, 0xc597a5d9141cf5eb
+537, 0x6c50d3307da89da9
+538, 0xb2e259cf10ef27ff
+539, 0xcf6862f7235a11e3
+540, 0xb60e07d1d6190673
+541, 0x69de7facea0c2233
+542, 0x19e548a3950a2d1b
+543, 0x6028bcf0501a1d75
+544, 0xbe060ad84380878a
+545, 0x425f528fa11f5584
+546, 0xeb64fdc71b8a0369
+547, 0xdb1d4fd9af7fc48
+548, 0xc32ea3df9267e071
+549, 0x9f0b4d409a6b7db6
+550, 0xe8e1ccce740c6369
+551, 0x8d0939433ef9c005
+552, 0x7b1a1969142d70f7
+553, 0xbe055803167b4dd9
+554, 0x3d525b7f29e2a20f
+555, 0x2b58ca2bf659dfcc
+556, 0x1884346d743d5753
+557, 0x3e5e6a992abcc639
+558, 0x334bed0210a5a1b9
+559, 0x545bd4a1c6a6ea3a
+560, 0xdc1d84e28f8b4ff0
+561, 0xf3608d9fea1e61d
+562, 0x639fadfda3d29b81
+563, 0x1a4195ffb607cd4d
+564, 0x823bdad2efff1975
+565, 0x5fe15698d33ad156
+566, 0x961e7fcba86b8dfa
+567, 0x9b7536cd3c368430
+568, 0xf9b9c01121a82eaf
+569, 0xa3f39bdf6f8668f4
+570, 0x100ae93ca508d02e
+571, 0x88de050245f0f9b2
+572, 0x4ca1e3a7fce0a942
+573, 0xce0366d47e60adce
+574, 0x3f00fa3b552ef6c4
+575, 0x718ca18c97de55ec
+576, 0x2705ca3caa5f047b
+577, 0x8e9a4530bbabc87e
+578, 0x57f73f76c2365c1f
+579, 0x5783c7e50c89e813
+580, 0xeb0899277d5a0925
+581, 0xdc28a57fafb04818
+582, 0x7cc97832d2b3509e
+583, 0xe937c3407bc84cdb
+584, 0xaa2714014f14802f
+585, 0xaa0b844baf434250
+586, 0x98f6097049cb2931
+587, 0x65d93055db2280e2
+588, 0x401e59aa74e005c4
+589, 0x8540018c086c5678
+590, 0x1ebd2b7c3093183a
+591, 0xb015ff173910186c
+592, 0x628d0a7cdcb5ee78
+593, 0xe6bcce512cb94fba
+594, 0xf2112d66f4ad825e
+595, 0x143ca3c833cc6119
+596, 0x141f17377db25eda
+597, 0x2b5abd96ffa1cbff
+598, 0xffbc3baec2fce0ae
+599, 0xfb7ef6be757ecaf
+600, 0xdec0e0b34488795e
+601, 0x4b0cb9bfd1759241
+602, 0xc1ec90140a15b4e
+603, 0xfc16386442e70156
+604, 0xe3f12f2adf688d91
+605, 0xd53b2d7bea9c8380
+606, 0x81cc446202a2ed5c
+607, 0xe70e3ad34c0b8ea7
+608, 0x5f33526009e7fab2
+609, 0x6e33d20305b8c75c
+610, 0xd6d534dd9461ac91
+611, 0x40cf8974d7c931ef
+612, 0xb051886f44a85f34
+613, 0xbee99cf63e9e4ec6
+614, 0x80d5c210e7e8f3b5
+615, 0x182817a277213ba5
+616, 0xb57e1fcc3fa01e29
+617, 0x21ef9e484821c685
+618, 0x40e0bdb94b52f6b8
+619, 0x3993c9973c999499
+620, 0x324fe4cdacd0c7f8
+621, 0x2f276173f8434ce3
+622, 0x16f1f99b426e931
+623, 0xed2148eb554f6965
+624, 0x2f164f3156c8ab9a
+625, 0x8fa66f8b7bdd6fbb
+626, 0xa7facbbc6906343e
+627, 0x4903fc405e661d8f
+628, 0xd5e01a117658e004
+629, 0x327b0a3517b49e0d
+630, 0xaa7f3a3a33033899
+631, 0x8e978760d337249e
+632, 0xe4706aca37516d8b
+633, 0xd3cb6f75b94f094f
+634, 0xd2b9ab9715999627
+635, 0x807694f77b219f34
+636, 0x33b79cb95dc4bc0c
+637, 0xc50b1dd63a993db
+638, 0xfee37af82faaec9b
+639, 0x9fdacc70effcef2a
+640, 0x1bf998ee028c7d6
+641, 0xfbdff299a6531fef
+642, 0xa108675116536b22
+643, 0x1527b4dc58905dce
+644, 0xa7707694303577ce
+645, 0x9b13fbc46e340e5e
+646, 0xd020c010ec0baa5b
+647, 0x384c228b30f40579
+648, 0xdc323bc7fdd5453b
+649, 0x4011efb021d86d0e
+650, 0x73540e72fd3d5c1a
+651, 0x9584873c3d070ab8
+652, 0x5b49b14248e8bf2a
+653, 0x9ac40d57d39d5919
+654, 0xe0c05768df113539
+655, 0x139cd4f88a7574b7
+656, 0xb9b32474195fd2cc
+657, 0x77da8950d9fb2c98
+658, 0xdff0beffbdaa4b7
+659, 0x7d7c9554dc45fa9c
+660, 0x105c2efbf8116c04
+661, 0xe62b22435244a315
+662, 0x59a1e2fe06fd3544
+663, 0x328af98625a31053
+664, 0x7e03a7ec81d1a078
+665, 0x94fe2cf6653e116c
+666, 0x333fc9ecf8a43b6c
+667, 0xb3828218cd24f83a
+668, 0x9c3fd7d848f20cb1
+669, 0x92ce295ca15436f4
+670, 0x6f088c41b55b1c1
+671, 0x57392e60bd643a69
+672, 0x6e02f429d6a11733
+673, 0x2ebecbf5bd43e0ca
+674, 0x8dd7afdc5552894
+675, 0x2114803fc6503fcd
+676, 0x38b1873ed0ca3e65
+677, 0xf32c628f60a36bf5
+678, 0x8552202e20fb7342
+679, 0x4741fe855aa0336
+680, 0xca4d638854de9454
+681, 0x183078fda5d360cd
+682, 0x6ae60d39e68650d8
+683, 0xfd0a1e80aa46b9f0
+684, 0xdc14a1d6b0901901
+685, 0xe54df01d09b44bb8
+686, 0x309de938e8d717bb
+687, 0xa5a2a2e49b9c36fb
+688, 0xb38be8c575c56063
+689, 0x770e5929cffdf3e2
+690, 0xcee13e2c47cf9f56
+691, 0xdfc2db4af23da4a8
+692, 0xe1c7dcefa31d46ba
+693, 0x350e999c00e252cc
+694, 0xaaffdb6ca58b7dfc
+695, 0x313d23d88402948e
+696, 0xc3ac1498a730309
+697, 0x69350ea02740c143
+698, 0xec0d5c624376e45b
+699, 0x9b49e00d551bea96
+700, 0xe6427840614e80e2
+701, 0xea27953175e05f6d
+702, 0xa2861b02743e8d50
+703, 0x35b2fbf59ddfe5ca
+704, 0xf25726ec3bdfbdd9
+705, 0x71aa4383b0aa4630
+706, 0x4cf3f7708d98f205
+707, 0xa6e0108f77f1318
+708, 0xcaf0b81e3222bd69
+709, 0x6b18e84e511d1b43
+710, 0x2a53e20b2f706858
+711, 0xe14599cf85db7644
+712, 0xb7a31525aecbbf69
+713, 0xfce7e9b5211df2e9
+714, 0x3f71617fc291625a
+715, 0x6164e5c8ede33272
+716, 0x43a0878da9fba4f3
+717, 0x491992fb5ce344d3
+718, 0x204b93918277c357
+719, 0x31189377f32f958c
+720, 0xa8522eef63ec4e04
+721, 0x52cb2d449d63dae1
+722, 0xd3ab20f38e44122f
+723, 0x9738796a2cf5f72e
+724, 0x61335538636be0f2
+725, 0x4dbd8fd3e18d9368
+726, 0xc4d395b525170e36
+727, 0x363d2b24bcb72ea3
+728, 0xfcedc59fa0ac0b2f
+729, 0xa00cfc5984f4c62b
+730, 0xaf0ca1028edd76ba
+731, 0x4fdf988297f27aec
+732, 0x891a876ecfe4a5d
+733, 0xb638f6971c14c255
+734, 0xff63c7ca4d499307
+735, 0x1ea43f18f530449
+736, 0xdbed5a3109ff48e6
+737, 0x2b01c0495e6edab7
+738, 0x87c1b49da18fb9b8
+739, 0x79356a301557c23e
+740, 0x3d83db604937cb9
+741, 0xda4471e873ed75ae
+742, 0x7a9bff590c3ea65a
+743, 0x63ed127445a08bec
+744, 0xaa232e05b3fda15f
+745, 0x643873aa525504f4
+746, 0xfa708f34ec5c9692
+747, 0x4817b5bfefae32b7
+748, 0x5c7c79edec1297bf
+749, 0xf06513dfd2d4a290
+750, 0x7f0cd3ca9c36631d
+751, 0xdebf1b00e7838d3a
+752, 0xe46004c03a6468
+753, 0x6b1ee341cf3319c5
+754, 0x765793cd734155d8
+755, 0xddc037ee2976777b
+756, 0x7d30119e994c6d06
+757, 0x372937236b1f1f03
+758, 0xbb2aa1c9ed2b0dc0
+759, 0xd0962de2eab2b6d7
+760, 0x7f80047fbd8ee81
+761, 0xab546293b8136f47
+762, 0x71b74ffd91794bc
+763, 0x3fc7c2e20a88d11b
+764, 0xedbbba9528be628c
+765, 0x4c29f32b97788b8
+766, 0xe721ed4b5dfb4aac
+767, 0xf1877d8e4eb87386
+768, 0xf399f60aa3ffdcab
+769, 0x73c7f48a0571873d
+770, 0x89a1c8b247a63fc1
+771, 0xb3f3a37f25f0eb9f
+772, 0x24dc12bfb6030b32
+773, 0xd070cbfd0e221c15
+774, 0x47dd6c8f9e3ec6c5
+775, 0x18b5e8a79e8c2717
+776, 0x46762bb85de44be0
+777, 0x4aed493495d044dd
+778, 0xc70422a4f09c5594
+779, 0x128787d3470d0a3a
+780, 0xf6a925f9e15a22a5
+781, 0x86e93253485db4a4
+782, 0x5023f2e2dd23e974
+783, 0xbdb6aa877c3fdde
+784, 0xa0e3237b79a5b74c
+785, 0x1eb41a88cfb42b8a
+786, 0x49a511f7a0a022a8
+787, 0x85596ed41f1986ac
+788, 0x5e572dac0265d4c4
+789, 0xf573b46d65cac12c
+790, 0x33427b16cca1ac0f
+791, 0x8d4d024f8bde011c
+792, 0x91dddd48b91c52da
+793, 0xbc5b67a1104d4c2e
+794, 0x104e90822e17122a
+795, 0x8be8c4e394ce3a1f
+796, 0x581426b9c905f36b
+797, 0x2666efb9cac21f5d
+798, 0xbf8d3e5f295060d1
+799, 0xa04598c9d6e237dc
+800, 0xa9fbf5516c7b8911
+801, 0x4c6ec7e0401140f6
+802, 0xb50cc45e1895ff0b
+803, 0x453c3801b4bbf75d
+804, 0xde80964dde83a7ad
+805, 0x1e17250043629e63
+806, 0x84d3aac71f95b6e2
+807, 0x38176666a55a3fd3
+808, 0x6433ac841c48a95e
+809, 0x5ba64539f33f48a
+810, 0x48e5e074f832729
+811, 0x3d1fb01607adc32e
+812, 0x63b22681ceb343af
+813, 0x868b07d09e57b86b
+814, 0xf98212b744a71fca
+815, 0x797843f3fd5e0ef5
+816, 0x6355bb33b59c84e3
+817, 0x6a6a1203c7944f31
+818, 0x177a4be397cbf761
+819, 0xea8fb29d82135b94
+820, 0x689c505eed27c67f
+821, 0x50cf765dcfd4e619
+822, 0x948e20aaaeb69e93
+823, 0x660761db84df481c
+824, 0xac2c2e1ebaa60049
+825, 0x81f9a054209afa66
+826, 0x66ba9ec387a82b65
+827, 0xfd602aca17e4932b
+828, 0xa4aac8d6b22f5705
+829, 0x994f7b582d826f84
+830, 0x9312d16bbe890581
+831, 0x3079b18f5f44e9bc
+832, 0x8ef5489a07ee6327
+833, 0x6c9f0fc8ecd29e94
+834, 0x7c603b09eafe66a3
+835, 0xc084c72299ff49c9
+836, 0x10459931d6387460
+837, 0x97908e3a98efa125
+838, 0xd7c84c45ecc2531f
+839, 0x90c7eb8b1c222f5f
+840, 0x74781389c601e45c
+841, 0x176e7351d5f5489a
+842, 0xa8d555a9197d890d
+843, 0xdf3035da9ec119a7
+844, 0xf2cfdd14cc4b7db6
+845, 0x70aed924a5a1fdc0
+846, 0x4b993be0711bc5f2
+847, 0xb712037cce51b6fd
+848, 0x97ca679baabf594f
+849, 0xde014850ea7b8e93
+850, 0x39be8272136c2a28
+851, 0xdd6ce923c7574ba2
+852, 0xb999537b19fc106e
+853, 0x3e421eaf2d0ae00c
+854, 0x3ee73eab1c009f68
+855, 0xb6c3187e644c0ec6
+856, 0x32375e8c4fd12e29
+857, 0xacc6dde27d3ab697
+858, 0xd0c6da152a9d13dc
+859, 0x2d93991d56d475b1
+860, 0x91f676a136ea942e
+861, 0xdba3c630477ef627
+862, 0x9832442c2743f71d
+863, 0x327f4b8d08f42ad6
+864, 0xb11d32b9aa369c95
+865, 0x8f3b53aa390b4e05
+866, 0xdd2b5c796526856
+867, 0x5f4a6d26e7266e74
+868, 0x92fc04aa4519deb5
+869, 0xaf5d104350902604
+870, 0xe92ee9d9eb83d48e
+871, 0x92e49c24b74d10c1
+872, 0xbbcb775e1df3dd9f
+873, 0xa778bc4153b74d87
+874, 0x2c5cb1cb460778d
+875, 0x204b96da5ca032a3
+876, 0xf8ed00512b2c8054
+877, 0xecea085421d30bd5
+878, 0x9b9b2f6891954ee0
+879, 0x210f39a3b60388e2
+880, 0x71cf1d4f49716e96
+881, 0x831f11200be69b03
+882, 0x47cf8470f8e9f115
+883, 0xb0b9621c996452dd
+884, 0xf5511dede5b32628
+885, 0xd48b9e4296cd4180
+886, 0x6ab70c3334f11aa1
+887, 0x4ebd26c8decac629
+888, 0x71aefa349216bbb9
+889, 0x37a5967b8b366498
+890, 0xc825ba8bb37e04d0
+891, 0x3411fa5b43243230
+892, 0x32ce54ba8dd0106e
+893, 0xa8a0446814fa43f4
+894, 0x9905b5e6d05924df
+895, 0xb226af8b15ce9a5b
+896, 0x594bed79eed4e4d4
+897, 0xeb6c283c67b0eb18
+898, 0xde5cb33d3dc1d629
+899, 0x1b57482ededa779e
+900, 0x1d07de9f3796453e
+901, 0x3d1b093a3b2f673f
+902, 0x7138dfb52b1e19f9
+903, 0xefd791255568c006
+904, 0x5e9f6ea3fd02d382
+905, 0xada1ec576dedd60c
+906, 0x894f3cd4d0463181
+907, 0xf8e46d0e8c179157
+908, 0x53234c91c74681f
+909, 0x458491d26dc655b6
+910, 0x2dce3244020c6219
+911, 0x6815f50060ce3a58
+912, 0x13ec2d1c70067d9d
+913, 0xe252832edd6cf225
+914, 0xd6656ac22edd7a1e
+915, 0x818d3bb5d04315a8
+916, 0x36c302529a73033f
+917, 0x1a9c6b44ccefb355
+918, 0x99e5dac400256022
+919, 0xdcf849ba5115f17c
+920, 0xdf9c1238c38b6ad8
+921, 0xf7d9422477cc5cf8
+922, 0x6e3ccc5e484db3f0
+923, 0xf9f5dc3936d5ce41
+924, 0x4e42a060e0fc7c13
+925, 0x9789adf2f7e0b250
+926, 0xd12a569e95979840
+927, 0x14b652c51eadd0c8
+928, 0x2d8d9baea2c7a8ab
+929, 0x9589291913c9345e
+930, 0xc3e994adc95fa2ed
+931, 0x30ef4019e04f22c2
+932, 0xae4d6ac24e6a42fa
+933, 0x14bf6dd1873be03f
+934, 0x48e3731b4088a6df
+935, 0x66b6f14a28de0cb6
+936, 0x825b0e7560fd526d
+937, 0x334b0c5989386158
+938, 0x5a4a0353e701405a
+939, 0x11844bcfdda17e36
+940, 0x737420216b683159
+941, 0xcdfda9150023d465
+942, 0x3ccb1da83154f7d1
+943, 0xca0ed9ba34067fd7
+944, 0x5ca93550b1ccb1ef
+945, 0xd52bf628b920563
+946, 0x239147f7b5d9e31
+947, 0x70457bc990dade04
+948, 0xec5a8e4749adada3
+949, 0xd1aed177de970226
+950, 0x537d06d8885531c1
+951, 0x4f83c7fc8e711e0f
+952, 0x412b2d578e62a0ab
+953, 0xcce8d0bc4f4d4e57
+954, 0xabd3b7802f2d051d
+955, 0x76721bb6d8b97e0
+956, 0x217c77ff302ff9f1
+957, 0x19ea31efebc3350f
+958, 0xf4a3f147857e5cb9
+959, 0xe802bf7f519cd61a
+960, 0x1c8d02dba97d6e3d
+961, 0x78bfb57b9bb0518e
+962, 0x8a48af98c6df1ca5
+963, 0xdfac5ac680503f7
+964, 0x4a9e3e96d9ea260
+965, 0x5f1931c9a7dff2a2
+966, 0xc1968e6cbed5f888
+967, 0x8eb493f97aad3ec4
+968, 0x90f2abe998c8ef87
+969, 0xc6aba12513cfbb3e
+970, 0x2c0ed550f9c796f
+971, 0x444fa35f7d9fe383
+972, 0xb5f04f695ecab10
+973, 0x3385d267df3349fe
+974, 0x4c70e55fa2bbbeca
+975, 0xd10dec43a2c0bf05
+976, 0x1ca77c39862fc552
+977, 0x9cbd688dfab24fc4
+978, 0xb7fd22171296a3d1
+979, 0x1183b02b50271be2
+980, 0x883a7e16e7e0a424
+981, 0x10d83194ac141f1a
+982, 0xebe3d57aed64b429
+983, 0x50b227d667b4cab7
+984, 0x5ea269feb856345d
+985, 0xb7b31144fa8d0f75
+986, 0xb2a4ee8f1fe24113
+987, 0xe630bafdf1401749
+988, 0x2a5fa38d1f97c355
+989, 0x26ce612a57a75fc8
+990, 0x657f3a8955ebe69f
+991, 0x6ce0b006f4ee7ad5
+992, 0xb2394f5046b31e22
+993, 0xe778365c658b2739
+994, 0x98fd9744990f5bc7
+995, 0x46218fb884bca27
+996, 0xe1b5e671a5fa3f4a
+997, 0xcde973df241f948d
+998, 0xa797c49a69f2eaee
+999, 0x7aac8c483a2edd2f
diff --git a/numpy/random/tests/data/xoshiro512-testset-1.csv b/numpy/random/tests/data/xoshiro512-testset-1.csv
new file mode 100644
index 000000000..78fb903ee
--- /dev/null
+++ b/numpy/random/tests/data/xoshiro512-testset-1.csv
@@ -0,0 +1,1001 @@
+seed, 0xdeadbeaf
+0, 0x876912846bc23b4b
+1, 0xc392a0d7b1e2ce1d
+2, 0xd280aa92dbaf6c20
+3, 0x9a545c48769bcb4
+4, 0xba901708334ed1da
+5, 0x5d5c05bee6575bba
+6, 0xdd35b1a2950ba097
+7, 0xa683f4f912b2de7b
+8, 0x9bc8ba4aaf061f16
+9, 0x592c9c1eb898e661
+10, 0xd4c45a31e8d0ea2e
+11, 0xd0f486ff8d15aa20
+12, 0x9f476a2094cf2e20
+13, 0x5dfeca30beb341f2
+14, 0xd148d9f7909fce1b
+15, 0x77dee98756ef7ccb
+16, 0xadc9df01bd7ca503
+17, 0x3d3395384db35e21
+18, 0xedb29f73f3497e33
+19, 0xe8064a9d95ad523
+20, 0xf371e0481aaac707
+21, 0x20ceb788ef6cc7b0
+22, 0x322843da066393d1
+23, 0xff5b70b598091031
+24, 0xbf92dd18de3e50b0
+25, 0x34c53c75dfb462e9
+26, 0x862b38ba34e2074c
+27, 0x71d7fccd15ff2980
+28, 0x57659fb10e0a2e70
+29, 0x504aff6ae76bca79
+30, 0x241e0010547d002a
+31, 0x6887bf03dd4578e
+32, 0x3b74f448c5b5503e
+33, 0x893c36f91ae88b29
+34, 0xc997f52382a03491
+35, 0x64d70ecd46d0d3d4
+36, 0x7391b3e2b46ab3b
+37, 0xad0cb7eb249d1562
+38, 0xad8c488df7a6abd8
+39, 0x821201a7bfd18bfb
+40, 0x13281b52ed3db7ca
+41, 0x5fb74a1925cdbbad
+42, 0xa0a82244150ebae7
+43, 0x33a699202c3e9777
+44, 0xaffd2aad50ab609a
+45, 0xd0b2cf8e469a6ca1
+46, 0x9642269993d293a4
+47, 0x4726480893b8003d
+48, 0x43927da186b7c458
+49, 0x48bea40a5f99f533
+50, 0xe378848ac37e2376
+51, 0xf9b1f0de5818b090
+52, 0x963368da3e372d75
+53, 0x94d760894d8d59fe
+54, 0xed6a9730e9f9d10a
+55, 0x78c870cc88e05f99
+56, 0xe4b4445bb8ec2548
+57, 0xf2d2c9524d47c49d
+58, 0x3e326b4eb1e18a59
+59, 0xc9ed2185d3b07552
+60, 0x37312e94b1a19e86
+61, 0xe2e44446e72437ae
+62, 0x3e5541807ba68504
+63, 0x64fc4a8e251ba4a0
+64, 0x95cae7337b2cef03
+65, 0x4ffc22e6cee5a43a
+66, 0xd1220fcfcd2b91c3
+67, 0x951e666e2b35250f
+68, 0x49a6bf7293bfeb76
+69, 0x2f572a06be223951
+70, 0xa6ef2f83e4ab699c
+71, 0x3c779b06245bef11
+72, 0x7ca2068971303e22
+73, 0x99181930c623a0b
+74, 0x23870cb8e351237b
+75, 0x4b3b096b31c0970
+76, 0x34567d210e095de
+77, 0xad2d302293c080b6
+78, 0x2b9912fc65270b03
+79, 0x9d83c41c4a03c97d
+80, 0xe595f5a6818c6843
+81, 0xf4de1eaa641abd16
+82, 0x2fd5d26fa4e8fda
+83, 0x20228869fa37cafe
+84, 0x2f5aaadbc5ed7917
+85, 0xc5a5411d976295d1
+86, 0x50860eb0a32883e2
+87, 0x9671e47f29c3fde5
+88, 0xb405167f98de3d42
+89, 0xeb9e4ab5b6277a34
+90, 0x30cb8055425283f5
+91, 0xd16fd04051825def
+92, 0x9dad7dc043f76efd
+93, 0x4efb0d073fa86b85
+94, 0x41f9a8f57a4c5441
+95, 0x261b340edbdfc85d
+96, 0xe1770e8f6417f4b8
+97, 0xcda740ac5492b7cb
+98, 0x421852a55f5fbd17
+99, 0x6b5e600ff816480e
+100, 0x6f810e2bc14ef783
+101, 0x3ac30d12dbe74179
+102, 0x6e6f55e8da77d1c
+103, 0xb3c1b3198ba1edd
+104, 0xd42a70884e0b4885
+105, 0xe5b8554e1a265456
+106, 0x984728fa61cde5e8
+107, 0x22a8631dea8491ab
+108, 0x7dde04d2623c5280
+109, 0x56ca5fa13744f021
+110, 0xa07c4dccd62318c0
+111, 0x7643fbf3cb825b82
+112, 0xb514293ac755d9ab
+113, 0x976a42d4d7d5603f
+114, 0xc89c841ed969a429
+115, 0xd3b58bd283d84deb
+116, 0x48b0cb54ef4045de
+117, 0x2aac0bed41855b31
+118, 0x84f602d6f7e8f8bb
+119, 0xffb8359b5c955803
+120, 0x50a030999c6b5a41
+121, 0xf5affea03223e801
+122, 0x480fca3d8b71f253
+123, 0x78f46d086436f38d
+124, 0xe55f321bb366b5c5
+125, 0x6a62bdcf97975049
+126, 0x4ba1b23acb2b30a4
+127, 0xaa8fab62162096ff
+128, 0x9df7f50611bbbe05
+129, 0x8c41f29908880a54
+130, 0x5ca1036a33aef749
+131, 0x749341c5a1836f3e
+132, 0x20d782c11d500c36
+133, 0x2aa089b1c26c888d
+134, 0xb20781d123d61f05
+135, 0x786a566307a0e29e
+136, 0xd7098641e929f68b
+137, 0x8ef02287eec14ac5
+138, 0x9e3aba8329a8901f
+139, 0x60f1e7d84742be3f
+140, 0xc5292e6425256ab7
+141, 0xdcbf5736a8f911fe
+142, 0x52ad9d372e4bd44b
+143, 0xffebb934b4bfe199
+144, 0x7b5914f9b9052873
+145, 0xab29298e00ae9e7b
+146, 0x3f02c3b7c59d121f
+147, 0xdfa607db43e83fd5
+148, 0x1d8b966bd15e43cd
+149, 0x25505363d4cf3ea6
+150, 0xc7f96d3a547efd4f
+151, 0xa76458b01561c500
+152, 0x88760cde8e7f1522
+153, 0x67fe6b33586a089a
+154, 0x5f0cc55ccd9dcbad
+155, 0xaf32ec846865364f
+156, 0x8f475ab26161ac5f
+157, 0x92f00c5e55d0f3fd
+158, 0x70488866e54bd9fc
+159, 0xa2579ad851925266
+160, 0x1f2d66d6ab9a6467
+161, 0x18f0e12487296a55
+162, 0xca46bd4045b88b1e
+163, 0xa48926a8c9ae6ddb
+164, 0x70cf4b02a878020
+165, 0x3c827fe43ccf6e84
+166, 0x7b90b8b99390d7fe
+167, 0x239e42fba10e8dfa
+168, 0xdd950d180b5554c9
+169, 0xc219887acba392dc
+170, 0xfb0cea050c6b5cfc
+171, 0xa0235db93ab17388
+172, 0xce4e9a6697f39fa4
+173, 0xa77bc206c26b62aa
+174, 0x6c4c0d77659b8d3a
+175, 0xccf68dae535cdfce
+176, 0xb774203a9c3697ec
+177, 0x8f9603ede62970e0
+178, 0x73466a6c08f5c621
+179, 0xe4acd501298142da
+180, 0xc1dc6d50d19ce4d0
+181, 0xf4d7157f3385da90
+182, 0xb03a1668d58ccc1e
+183, 0x6c1ec730cdc15ff2
+184, 0x22b33428cf6f7b6e
+185, 0x86771ba36131beb7
+186, 0x5c6f1dfb5df9a773
+187, 0x83d0e480faf79e2f
+188, 0xb574e4f020a5c2f2
+189, 0x1037336e206cdac5
+190, 0xd358d3bd2f84dc07
+191, 0xe4ab7d65f5359d88
+192, 0x575e10beab6ed90d
+193, 0x92b392d9011fec7a
+194, 0x3743566cd03a5632
+195, 0xd84d08e20ab24432
+196, 0x264edbb98ea18981
+197, 0xb02ec336d3439df8
+198, 0x98dca28ef3481cd0
+199, 0x4c7b36c3d5a92ee8
+200, 0xea3a5d8c0656562a
+201, 0x84df1e0b04e16ffb
+202, 0x4033a0901c5b99b2
+203, 0xd655e52a52f95806
+204, 0x877a6c6e491f65c2
+205, 0xc7c0476aa3b57914
+206, 0xdaeb947a7ea2bffd
+207, 0x9f353a9a44bb3542
+208, 0x4c6149547cb86c21
+209, 0x476f38042f81f574
+210, 0x73ae5842de15b837
+211, 0x56d08498c32a3ca1
+212, 0x3a29bd1e56c4a455
+213, 0xd4a039af15c94e2a
+214, 0xd7e99d87726f6b7d
+215, 0x11c8799497348055
+216, 0xf301a2a414f75291
+217, 0x61ef21e4369a33b5
+218, 0xbfebae360aed836f
+219, 0x77b268e02299116e
+220, 0x1d97ecb5b5ff1390
+221, 0x8931baa8bbac229
+222, 0x3e0a9cd01623e25e
+223, 0x241849e522393124
+224, 0x4cac9db644404e9f
+225, 0xf1b301aaaf6ee36f
+226, 0xc6f3b0e23ed765f
+227, 0xa721a93561fdb2fb
+228, 0xec5d2fe7bdd570b6
+229, 0xaac87fcd59a92a17
+230, 0x21f96034df83ca3e
+231, 0x39168b96c29637b2
+232, 0x2285e7b1962b20c4
+233, 0xe05877c5e64e80a0
+234, 0xa6e5e068434197b8
+235, 0x9953d6ba338c81ce
+236, 0xc44dc6a3db952698
+237, 0xfa5494d4815d3152
+238, 0x467f7c752a541c4b
+239, 0xb1a4872d1fbb6953
+240, 0x53fd30ae98ca00d7
+241, 0xc70a548b87054598
+242, 0x9d8a20c63463d5ea
+243, 0x4cecb6becf778a54
+244, 0x887087ebdaca7461
+245, 0x6d518861d1cbc12
+246, 0xb8e717a809a31912
+247, 0x2d36ba962e509fe4
+248, 0x9bf46721bb113d5f
+249, 0x2269b9c4c443667a
+250, 0x979d9b4e6a4036c4
+251, 0x97543e06d384fa7e
+252, 0x75ad7d2c23b6b570
+253, 0x43de810a5ea78624
+254, 0x80927c6293498a84
+255, 0x45a8ad9bb8f0dc2b
+256, 0xabc320ec65a09cd5
+257, 0xcad9c0647042cd93
+258, 0xe84acb1bd3f3c9a0
+259, 0x76879458f63a57b9
+260, 0x49832792c9e03bc2
+261, 0x363459686faf7f24
+262, 0x1953702db3bc481e
+263, 0x7fe6ba3b5a71fc59
+264, 0x1b17d2f961567f8b
+265, 0x4ad033e1a4976f6e
+266, 0xfcc0a6a6ba63fe49
+267, 0x841ac723afca1b63
+268, 0x6c1e91e669a97e7b
+269, 0x5bd742d77c4ffc4d
+270, 0x2a4ee5d86d2c240
+271, 0xe6d74f8546c38065
+272, 0x8bf207da18d16f8a
+273, 0x9d1c2a99dce927c
+274, 0xcba190db5ac2bc23
+275, 0xbabffcd557568ce9
+276, 0xa299e5d76f753e2f
+277, 0x1d9b7854688000dc
+278, 0xb77578a80be855c5
+279, 0xed5ca1b150fe57ee
+280, 0x45ee175cab6988fc
+281, 0x909e1e69be99cc5a
+282, 0xeb19bad3b280f6eb
+283, 0x183e05016ba8278b
+284, 0x353ac3c6b09909cd
+285, 0x52acc5f973291d01
+286, 0xf34bf118d4119a02
+287, 0x9374f1c812dd0b4d
+288, 0x3cde5e29ca458381
+289, 0xa273cf101a664a2c
+290, 0x3853d177648e274
+291, 0xd56392bd92a668f7
+292, 0x1a1668b6f658e0df
+293, 0xcf91598b7f111669
+294, 0x9de820277a8591ab
+295, 0x13e814a02eae1592
+296, 0xc6327921c4c8e137
+297, 0x4552a0478447893e
+298, 0x90599b2c47bd6a68
+299, 0x6c6e379db4c5bd45
+300, 0xaddd155f6abe63fb
+301, 0x16db9bcfefb79d09
+302, 0xadca159b2d4590c
+303, 0xea280435e2e8ce04
+304, 0x267dde359f765411
+305, 0xc864e3d28e62e7f4
+306, 0xe1fb3b84699cb288
+307, 0x736e511cbe0a901b
+308, 0x8ab9371873aa48d0
+309, 0xee14f5d0455642dc
+310, 0xf46227f274aa445e
+311, 0xf2ffe9298c22aaa8
+312, 0xb252d7080d3d64e5
+313, 0xf028d588f8bf09a3
+314, 0x51cf0c448bceb8a1
+315, 0x78d514cb6eb97a24
+316, 0xd35f14eeb72a2a52
+317, 0x2517e47da9fc019b
+318, 0xa489556e41ab02a4
+319, 0x656545c76c5c5ad4
+320, 0x492cb4aead67db01
+321, 0xe67564b20bcd1500
+322, 0x52902e9ddd3736ff
+323, 0x5fce2d6101c2d2f4
+324, 0xd6f3518a5c17b71f
+325, 0xcea602751388c642
+326, 0x7c457e009571d1cb
+327, 0x227cfe2d67db803d
+328, 0xe6ba583bae3ce6ed
+329, 0xbfede024874e2353
+330, 0x9d3f741ad2fb1c3a
+331, 0xc92d955fdc49e35b
+332, 0xe69f6bd427cb55c9
+333, 0x25154cf96eca70f2
+334, 0x8ada45f19fb5f353
+335, 0xc53b729eceb66699
+336, 0xad1ffe3b331399d2
+337, 0x26fa10d0ebb11981
+338, 0x4421bf4042ab1aff
+339, 0xa33e3522a639e3f9
+340, 0xb27e6a340f2ae673
+341, 0xfbc848389681b76e
+342, 0x87c9b594466133f1
+343, 0x5599811888d255be
+344, 0xd125be5eadf51857
+345, 0xcfeddf66c3515e41
+346, 0x4e0e7d52bf2d41e7
+347, 0x7350bd89ecaa448b
+348, 0x757b947295bb2315
+349, 0x9f75502e97420690
+350, 0xe507886c40a0d5d4
+351, 0xffb51fce9b6dc784
+352, 0x99c25bc884a07f13
+353, 0xae344dc6a0b5166d
+354, 0x6e40f70fd2ae8839
+355, 0x549899226f83a618
+356, 0x183534a08628f76d
+357, 0x13dbc72806e9cd8a
+358, 0xc451b9a7f19a7148
+359, 0xf3ddd00aa2b77694
+360, 0xbbbf6a41f2637562
+361, 0x915549fda9129f5f
+362, 0x6fb5452e819db506
+363, 0xc5122da2374c0ca6
+364, 0x9f418bff6eca6a59
+365, 0xad3988d59c836956
+366, 0xea3a5d086c5fe4d3
+367, 0x11a982723a4fa262
+368, 0x7f8bc4b1e17c14b2
+369, 0x4ce7986a6f72da2d
+370, 0x41a50493a56271df
+371, 0x477f24559f89ebfd
+372, 0xc572ffc3e23521cb
+373, 0xa9f628071811e1be
+374, 0xcff02944927dc1bc
+375, 0xd9f3bc4c212e939a
+376, 0x21ffd91aafaf2c40
+377, 0x787f6ed5a2bab7b4
+378, 0x4609e004f9f4b1dc
+379, 0x35ab1b27ca8c420e
+380, 0xcca7c9a1b9c3b92b
+381, 0xca101f017408e01a
+382, 0x839abfc61cd0e8ef
+383, 0x4c9cbb325badd3b7
+384, 0x5461826c9f315581
+385, 0xad20102aca3d9965
+386, 0xb649a32f64ab0793
+387, 0x725876dd5ff27c65
+388, 0xf2b14bbba3426942
+389, 0x5435afdbc2d685ae
+390, 0x9c82ffffcdaabf8f
+391, 0x20cdae1036653261
+392, 0x750c8fc5e91ea522
+393, 0x2360b1ebcd9d5b1c
+394, 0x565e847ea6e9cacf
+395, 0x8cfbc0c6bb12629b
+396, 0xb26a10d6f12d2655
+397, 0xef86d9c5378690bb
+398, 0xe23f3de5c1b799f6
+399, 0x31414ecd6ad5c5ef
+400, 0x2921e71b83de7f45
+401, 0xebb98f34ab50544d
+402, 0x6a412a4e053db405
+403, 0xddbfe7ee3e59a7d6
+404, 0xf05a0b36f67b9d5d
+405, 0x849702c7806eb90
+406, 0x2203171eecce2095
+407, 0xb35c4db941a0ad7b
+408, 0x9935496450296948
+409, 0x25f6a856fb1eb5d6
+410, 0x1dbb88d4fec8e2aa
+411, 0xc60d3d3e39a26b96
+412, 0xf056684ba3a744d5
+413, 0x9572bd538afc7a32
+414, 0x254a093ab05dc0fa
+415, 0xba6097f07c855fa9
+416, 0xf8b4dccfdb80e63e
+417, 0xd2847b228bac28b
+418, 0x8a8fab7c6031ab8c
+419, 0xec08987d742c44bd
+420, 0x133e3fff1c3c3412
+421, 0x6530ebd39d7b0f3
+422, 0xdeabc74a2373434f
+423, 0x7815e18e47103e3d
+424, 0xf9055ff370764f53
+425, 0x5a0d1345d2a9cc8f
+426, 0x4de989802f34160a
+427, 0x28a18124bdac81e5
+428, 0xeb45ab441afbb912
+429, 0x8f5a312fe7a0aadd
+430, 0x7314071d14857900
+431, 0x6409cb66fa1e53ef
+432, 0xfaf96ce7d2ac6c00
+433, 0x76e7a4baea8c663b
+434, 0xb6e304f2a50a0321
+435, 0xa9ea300fd24f020
+436, 0xf35c396e30b7101
+437, 0x81c58595f98f6fbe
+438, 0xc0a7e9607a117181
+439, 0xed09111f23a46ac4
+440, 0xb54c0bb2f0c1a3ae
+441, 0x43467aba9df3e0a5
+442, 0xe8339c39a322db8c
+443, 0x51c577fe5ec19d36
+444, 0x4f3b14d68f848502
+445, 0x686cd92e19b79dd4
+446, 0xdc741863e36fae80
+447, 0xd43d6b68d8b201e9
+448, 0x2c50554b76cef087
+449, 0x56c381d91bf8b46d
+450, 0xd127daceb8ff95be
+451, 0xd0ea2f226b20d165
+452, 0xdd905744fa9202c5
+453, 0xfe1a9600438aff20
+454, 0x5d1abb8492e2e820
+455, 0x8e39cb8cc6fa2c06
+456, 0x9f1dd3396c6629c9
+457, 0x9d03c31afb79a214
+458, 0x22010d4e60bdda86
+459, 0x80ed07d705582e63
+460, 0x4f62b3e2e44b8571
+461, 0x101943c84597f33c
+462, 0x4b4345de91b98294
+463, 0xc2ac56211ca6ee2c
+464, 0x3cb95b436ece64d3
+465, 0x7a44a3c791671dcc
+466, 0xc8bf29ce122b9d18
+467, 0x7943b142841bea04
+468, 0xfa2cc19a05924ff4
+469, 0xf9ad7238096bedb9
+470, 0xe63a166ab147220a
+471, 0x6290dc36e53827e3
+472, 0xb21625ceb1014816
+473, 0xc4e932b9872d1e1f
+474, 0xb1acf7e2a966bbb5
+475, 0xb9acdda48ec54590
+476, 0x336d528109c184a7
+477, 0x11316b2094f4d127
+478, 0x9e336afa73ba2faa
+479, 0xd01fbf09ceeb6b24
+480, 0xcf97f3d08a634c2
+481, 0x72366953156c6a32
+482, 0x6db4bfd8113532e5
+483, 0x420d662640c9c82d
+484, 0xef483fc8418f98b8
+485, 0x8f94c007d9e7d764
+486, 0xa920478806e51718
+487, 0xd4ff1f37c4402973
+488, 0xddbc1ff65d2e4944
+489, 0x1e358eaa42485b6a
+490, 0x56cb2d0f9bab7e7
+491, 0x78965a1fc3ca2f1e
+492, 0xb674cef0c1fd959e
+493, 0xabba2d9a65e8a159
+494, 0x2c831ed46e02e9e6
+495, 0x96813fe5b0baca53
+496, 0x344cad935e02fc84
+497, 0xfb6e6b235ddf773c
+498, 0x29947186532b0ac
+499, 0x39446d366a46f449
+500, 0x270064563611ed55
+501, 0x9134963540c148bf
+502, 0x46e72242d92ace70
+503, 0xbb588070df8c323
+504, 0x7656b60e47229e4b
+505, 0xa1515367c8182e88
+506, 0x67194c7e83f0be6a
+507, 0x8019b59794f3ec41
+508, 0x9346f2071da5e890
+509, 0xbf2968158965aa88
+510, 0x23234e9079cc8067
+511, 0x52480f9037e18c77
+512, 0x28849338ded11a2c
+513, 0xdee551c607d5934a
+514, 0x7378da20ad9165f4
+515, 0x8c913ef9e355a530
+516, 0xe2fe80181a74edd
+517, 0xf1c99e6c3b0ca5b9
+518, 0x9ed9759b0ec64466
+519, 0x651dfcfc1fefa43a
+520, 0x36d83fe0802969c1
+521, 0x288a70061165d01d
+522, 0x5b9ff38ba4551eb8
+523, 0xb14b82c0d9052f6
+524, 0xa4af53cf1da019e8
+525, 0x562782be5655f97d
+526, 0x87f92290b4f40131
+527, 0xe18168d9d140e801
+528, 0xbdacd598ad865c11
+529, 0xc0f4fe27f0884385
+530, 0xc034cd89bb7f0f42
+531, 0x3591756fece4a5fe
+532, 0x1a73abbcbdbbc237
+533, 0x9af0782b54c0527b
+534, 0xee5e13f65e7b76d5
+535, 0x16b7de36f37d2dc2
+536, 0xda6e3700f7987cf7
+537, 0x88b1a7a50bb8d03c
+538, 0x73e0f21f7e240cec
+539, 0xaf3de5598cd8ae24
+540, 0xb48ac453d9a452b8
+541, 0x67c7769e42377756
+542, 0x29d1c81c990639c4
+543, 0x5315f99dcc1926aa
+544, 0x25e2df9a59623d48
+545, 0x17088168b2d6335d
+546, 0x48929f9995cf0b8d
+547, 0x9c80ce435ecb9b7d
+548, 0xa6dbed42aca888a0
+549, 0x95d7ce284511406
+550, 0xc98a600e73fdf6b
+551, 0x144dacadb5dcae70
+552, 0xf1c57aef0ced3fd0
+553, 0x4d7e9370bf5326e1
+554, 0x60eaec9ceddb9bbc
+555, 0x40b99b3647bdec5d
+556, 0x23451cd70ba654dd
+557, 0x9e1e45a64320a108
+558, 0x572b629749dd059c
+559, 0x370b84536cf92fbf
+560, 0xa53c15e1b8e6930a
+561, 0xff01f2d42f396a5
+562, 0xe4ce127c2371d1f4
+563, 0x964b007fd911f9d8
+564, 0xe8ad752ca4201d78
+565, 0xec150ec1bcea7899
+566, 0x3a98196d39a146e0
+567, 0xa13a6d24b065154d
+568, 0x208f8f86fce0ffb7
+569, 0x48f3f5a286b8e61
+570, 0x231fc95324da4f0
+571, 0x4a912cc8c1145073
+572, 0xf55643f746f7c8
+573, 0x981b50355641f3aa
+574, 0xf5cd5ca76785adf5
+575, 0x26809313bad9613e
+576, 0x8b3bc2cbe2257a8a
+577, 0xe7190ca66630f33d
+578, 0xd678cb7a88ceea26
+579, 0xa82e3b2a968f54a1
+580, 0x9f495544f523a642
+581, 0x542ea223014d5724
+582, 0x976e7bc0aec4f3db
+583, 0x6a4936ec50a7744f
+584, 0x30ee4d2e234675bf
+585, 0x7668a3489b46baab
+586, 0x69b5bfddb0c219ce
+587, 0x6cdf31a1621b4ee5
+588, 0xd47c5fa7524889e8
+589, 0x5ea77c458ed6b908
+590, 0x9f46aeb5373d4f5a
+591, 0x2436d30afa02fb0f
+592, 0xf75b5b183a82b399
+593, 0x2a0d4f653d5fb2b
+594, 0xbaa369f3cee66a53
+595, 0x3b86f73fe2f8a1e3
+596, 0x6d7bb0961e1fd2c7
+597, 0xe0ea2803b75bb089
+598, 0xdad50e588726a5ed
+599, 0xaad4c6349ef8c9bd
+600, 0xac89692a9d19027f
+601, 0x9128ccf4627bc207
+602, 0x84d06846beb2e304
+603, 0x7e8f78333abbc3d3
+604, 0x3f60914f5bd7e556
+605, 0x1d1304a8114ca709
+606, 0x140e3ae0d71cd49
+607, 0xd11427f5452fd9b4
+608, 0xf5ab3e8a0298f3be
+609, 0x6b9e13c2d33aac45
+610, 0x855e2a9d17dca5af
+611, 0x1578bc2441980cb9
+612, 0xb6d79ee20056c9a2
+613, 0x8becbe9a399154b5
+614, 0x7dcbfacd30d88c84
+615, 0xd9d2e48917b7010c
+616, 0xfc72160892a21efd
+617, 0xc7034a2a63410f42
+618, 0xbfdfa5eaeac7f80d
+619, 0x89ced96a0e78f3c0
+620, 0x8afc51dfec588d2f
+621, 0x6cd965499ebd9c86
+622, 0x86ca64414acae86b
+623, 0x235defd7163050fa
+624, 0x8350429671c8a0c5
+625, 0x86242291e8c4ad95
+626, 0x479275615cc7ab91
+627, 0xa6f410c0e2a26b2e
+628, 0x3855e7ac300d255a
+629, 0x46db9d9dc4109474
+630, 0x4ea0b44c4fe5b658
+631, 0x5433d83c0590d49e
+632, 0x326ad33d53e5cb0
+633, 0x2ad4e88d8b8f4865
+634, 0xc0b971ea67fc2c1b
+635, 0xd4db06ac68087267
+636, 0x35375c34999616ca
+637, 0x7f313fa01760e4fc
+638, 0x1f8b7ae8938e7d90
+639, 0x68aedc55512291e3
+640, 0x71e13848edee765a
+641, 0x83feb5bccb136a0
+642, 0xec115ea084398beb
+643, 0xdecd12d25159994a
+644, 0x6ef3f928b79e1d15
+645, 0xc910824824961e9b
+646, 0x6e56798f305fba9d
+647, 0x9f2a78709ae8321a
+648, 0x83673dba510e8329
+649, 0x38ee325de51bee33
+650, 0x6dde848944ff5c19
+651, 0xe990435690783cd8
+652, 0x4ef2b8fdf3a31076
+653, 0xb35c280054e321d1
+654, 0x2d66f077be780ce5
+655, 0xf003d07f5e8d24f1
+656, 0x63286f306d80f9e7
+657, 0x749e66588e9d5bdb
+658, 0xf296e9d13eb97fdc
+659, 0x8cc6e45328cecc17
+660, 0x4b35bc27b7d27225
+661, 0xea1f0b0e7cb3f20b
+662, 0xccddb348221b89a8
+663, 0x8a2b674dbe8732
+664, 0x90a2fe18fc860a2b
+665, 0xee92bfccb4c6986
+666, 0x55bfc65eef023c41
+667, 0x61e082760147dced
+668, 0x2cf7af28fb253ab7
+669, 0x58dec379fe82b794
+670, 0xfe6d8ec391ba7af0
+671, 0x3f96cf458d50cc0f
+672, 0xb97a170ccb8094d7
+673, 0xca876f8a8ee27019
+674, 0xa03a1b9f8c2c3595
+675, 0x8ce5c48735932234
+676, 0x5bcbfeda6a7099dd
+677, 0x32ffcf8fc39ebdda
+678, 0x945d734289b83a9a
+679, 0x8824610f5d088bdf
+680, 0x9259056e8d773859
+681, 0xf4b40ae4f8ec9d59
+682, 0x78be6102d44b8198
+683, 0x7dce883504ae3027
+684, 0x3bcbac86d37993e
+685, 0x334af10e3ce0cb50
+686, 0x12b3fe24d1df167c
+687, 0xfa17184c24036cb
+688, 0x200d27e144d9f60c
+689, 0xcb1fd05755672423
+690, 0xd5ad76956dced3a5
+691, 0x7e54849c6a87880d
+692, 0x359af4d5828b1f79
+693, 0x26453ccc43829d09
+694, 0x871808b8e5cb05b9
+695, 0x955a1ebf98da9d59
+696, 0xf5893da12ea014e8
+697, 0xae43111b363eaf7b
+698, 0xc6dddd603e4b5cca
+699, 0xe1cc643e404fe108
+700, 0xfcbe2e95831db0bd
+701, 0xdc01ec9e93e54c55
+702, 0x380c88bd4fa28495
+703, 0x8bd7bfd49c7d768
+704, 0x6489b7ae98113f23
+705, 0xce19f0dd365e3544
+706, 0xf5a58147d87d3083
+707, 0x81efbadc3c88a2f0
+708, 0xad91664c2e7da0b8
+709, 0x8b78dda657eb421b
+710, 0x6e552452af7e258f
+711, 0xb260660b01d6650d
+712, 0x27a45a1cfbd98603
+713, 0xa8f620c73f0ffb4
+714, 0x7e43f2dd4c476ebc
+715, 0x7d4e51c6a3614d8c
+716, 0x3d5300002b65077d
+717, 0xc24e7491fa70d4db
+718, 0xf2bcd733a1d21f0c
+719, 0x8d5bb04c5273eab8
+720, 0xf9cd01ba63f92da1
+721, 0x64d29462217baa90
+722, 0xcaa1fc3b19b00a05
+723, 0xc9fae87d7026e4ce
+724, 0x40120cb2e2680cb6
+725, 0xcc83d069bdfa6caf
+726, 0x6a11b1724a9404cf
+727, 0x8c24bc538308e19b
+728, 0x2be028ae22c66d3d
+729, 0xae2a94a920547418
+730, 0xd0c9c729c0d0fdf9
+731, 0x79855e445226f087
+732, 0xa467118788c6ae21
+733, 0x18a67b3f737ac66c
+734, 0x9f0422fbf1704575
+735, 0x3cb380445380b25f
+736, 0xe16d37c484cd8232
+737, 0x39403a33ed4f833d
+738, 0xfea5df032f093e41
+739, 0x47b5d65b30a245a2
+740, 0x5711e2c4cd1bbc2e
+741, 0x4b17a868719ff611
+742, 0x12d79e4df14b55e1
+743, 0xb759adb60f0a5110
+744, 0xc495633b8df72a7a
+745, 0xc0053b2671187190
+746, 0x8d3924968e71608f
+747, 0x1523ade2927ac191
+748, 0x1cfcaf3b0bc57fa
+749, 0xb91a7984235eaad3
+750, 0xfc5c6cb849eb3a5e
+751, 0xe5d427fef5d314bb
+752, 0xb714878d2c853b41
+753, 0xbaf47a81594ca957
+754, 0x3de6e218723fcbab
+755, 0x30ee829bf38ab024
+756, 0xb374a5ca939b2a77
+757, 0x689ca34206e9d827
+758, 0x5b639ed104818c6e
+759, 0xd4e8fb1ae2cba92a
+760, 0x1e74a4554b198ff0
+761, 0x8554e6fe30612ac5
+762, 0xf8078efbafaf7941
+763, 0xb60b6cde7161bfbc
+764, 0xe81e0e93e0dea073
+765, 0xac02d3f3b697c994
+766, 0xd10bab917e4348e4
+767, 0xe6fa834ca7e7aa0b
+768, 0x6eba49968d0d5254
+769, 0x4a94152838ad62fa
+770, 0xe8789cecbaad60cb
+771, 0xa970ebd7a89905df
+772, 0xe49e4d76fac277ef
+773, 0xb8adb96bd78e0d22
+774, 0x3691be969b56ec80
+775, 0x566a22004cdf18be
+776, 0xd4da2618b9171235
+777, 0x8dd6f2f32503d141
+778, 0xfe199681d91e5178
+779, 0xed5891007cf409eb
+780, 0xd5d999f9d416f32c
+781, 0xa5f9a414434cd178
+782, 0x3cd8de680cb84094
+783, 0x2c70c158a5f08368
+784, 0xfd4c6d304ad80f14
+785, 0x1b3555f90f0fa209
+786, 0xbfc5397a69a4335d
+787, 0xe51459f0861790fc
+788, 0x173d12cdb0c70d44
+789, 0x6c88b6cb9a439159
+790, 0x9e3d527583959951
+791, 0x8974610167fb3d0e
+792, 0x8ddec067f7d91a2
+793, 0xda0a0394d476a41
+794, 0xb4bc6f905125bb13
+795, 0x26647355ce93705
+796, 0x6e77d00e7d59f697
+797, 0x8a52c90d219277f8
+798, 0x9a9d112119a2ca00
+799, 0x78a4507edbc0c338
+800, 0xc1a70ab377af5b48
+801, 0x36a1278bed1d15a4
+802, 0xf0f6fe034ce240bd
+803, 0x3774f55f64722926
+804, 0x63e4e477803ed6bf
+805, 0x2b631b9e6e3dff6d
+806, 0xc4c2268f2eb0bf1a
+807, 0xb0b910cedfb4eec2
+808, 0x491781f6e8f5078d
+809, 0x2db574eaecd44693
+810, 0x397d8904141cb1b4
+811, 0x2848d2ad2a224e0f
+812, 0x41f9fae31cf93d56
+813, 0x68bca8f51877387a
+814, 0xb43114eb511ba30
+815, 0x6811c33595351f9b
+816, 0xf7c9b154b26a6501
+817, 0xa35317f4e4369356
+818, 0x2bbb3809e211de1b
+819, 0xbf95e8ce2588f5c5
+820, 0x951b4fc9a159b558
+821, 0xbedaf5970dad8ce2
+822, 0xd79d52c7fc92c15d
+823, 0x2b1440cba83e0a6f
+824, 0x968f7f07b4a36640
+825, 0xddb5d48949a8258e
+826, 0xc679b204042b05f1
+827, 0x9d00c9fbd7edbeb4
+828, 0xafb601b2be4c9a97
+829, 0xc35a1adfe92039b1
+830, 0x4392c71aff19cdfb
+831, 0x1ab34fdb1e3f94fa
+832, 0xe8e3bad693ee9d2b
+833, 0x78ae4836d1711383
+834, 0xcb764bcf9104bd66
+835, 0xcb80c3c2286af3b0
+836, 0x5c1d4bb3d36d0deb
+837, 0xa2071886b21e6c32
+838, 0x137909746a058350
+839, 0xa2a196ae5a9845b6
+840, 0xc0776cc50ba681ee
+841, 0x8101ae19ebcdf8cb
+842, 0x253846a45a1bea0a
+843, 0x945829fdcac6cc2a
+844, 0x28dcc868b896b986
+845, 0x336d9114936baa1d
+846, 0x4bdf4ed2bfd5d8ef
+847, 0x7f43f8324a743507
+848, 0xb721732c35266109
+849, 0x5654184a7879a5a
+850, 0x932e5c33053debc8
+851, 0x6c8a42cb4bb07c7e
+852, 0x3e2853cb7367a326
+853, 0xf670fcefeaf352e0
+854, 0x2f0ed63118ecfeee
+855, 0x22b32d6a6fcaaabc
+856, 0xa8df4f57af993b14
+857, 0xc4fbcdfec94e25fc
+858, 0x7855b5802cd2d6e6
+859, 0xd31ec992392792cf
+860, 0x499b4022955ae602
+861, 0xb1d9df2a56d1d9b5
+862, 0x2be020670c2ba9ad
+863, 0x4f51c9ac114691f6
+864, 0x43db97ee34cb6585
+865, 0xf7889fa1c3372662
+866, 0x7428ebb0889ce59a
+867, 0xf69778b6c2a803b1
+868, 0x68c7f79994d68355
+869, 0x49b31b833c1fe002
+870, 0x14823830b7aa93f1
+871, 0xfa3fe89a5d2be21e
+872, 0xd75217b26deb1860
+873, 0x5e49f031d805df72
+874, 0x9d3c204122e892db
+875, 0xe4f71314f6bce3c
+876, 0x2ac5f8fa64ab428f
+877, 0x71a8ee18efa4b447
+878, 0x38170f177f7babce
+879, 0x77cbc1adc5a7104e
+880, 0x45b756a5c674ed37
+881, 0x3da29002dd3a1dfe
+882, 0xcb645f42a1a2df5f
+883, 0xb733e9942b4c7ed0
+884, 0xbe1c3292f348b4bf
+885, 0x78d11d13c10c2099
+886, 0xf73fa04c2283e128
+887, 0x87e719305bc8ed51
+888, 0x6566b3860eed926
+889, 0xea271a89df9f7896
+890, 0xcace2b0b23f6e8f3
+891, 0x53e2280362cfc833
+892, 0x33ee7d314d33fa14
+893, 0xc033d8359b0de79e
+894, 0xec1687b4cf771683
+895, 0x7e9971fdb5f45106
+896, 0xc9e3c5777bb561be
+897, 0x17d1a55af8659714
+898, 0x312ba0a1f36f469b
+899, 0x74c8f6caac97449
+900, 0x951c3d8e2f973859
+901, 0xff5de9a5079d8908
+902, 0x839fe3f7bc5dc4d9
+903, 0x5a21de4667516721
+904, 0x38ec459dc4da82f9
+905, 0x7a72aa7877678423
+906, 0x9839c4f3ff159ed2
+907, 0x338c7af893a226e4
+908, 0xe057270bd63d90e1
+909, 0x74382261608dab72
+910, 0xc62804f051b15437
+911, 0xd761a1ef0c5db73a
+912, 0x496ab0869f08c505
+913, 0xc8b021a098da8e32
+914, 0x6dfe12239acc8048
+915, 0x2e7a263485f52b8f
+916, 0xd5e9ddf81a37d37d
+917, 0x5de50454fb933d95
+918, 0x431900d5526e3d9
+919, 0x77476c947d99e745
+920, 0x31827e1ae78d0df6
+921, 0xedd8155bcff2a247
+922, 0x1e850adc3c67d0fb
+923, 0x661108b21735dd75
+924, 0x352812aa0035019
+925, 0xb927385f13660903
+926, 0x9a516de262c20354
+927, 0xef7bc11900eaff94
+928, 0xf57add7357601ba5
+929, 0x80e7a452cf0b3215
+930, 0xcf6f3fdfdd010a89
+931, 0xb06e98efb8c4cf8d
+932, 0xdaa9088d73c8469a
+933, 0x2932275de82cf904
+934, 0xae4fe81ef1f2ea6d
+935, 0x8f55ad1c108ecd7b
+936, 0x4d36deb616fe60d5
+937, 0x129d84b87e28cbfd
+938, 0x3d9b18404e0d716c
+939, 0x5576067b39672db7
+940, 0x7e57c5806e5bd926
+941, 0xdb86a738b0df1c15
+942, 0xc4263370c4ff9fdd
+943, 0x57d5bba42942542
+944, 0x2b2be3e9fa816534
+945, 0x54c1ba10ca97f953
+946, 0xd89c1f14d9805c3b
+947, 0xcdad0af12830e5d
+948, 0xef8a4e05bb7939a0
+949, 0x10a02cfa077c64cd
+950, 0x37dd082b003ba023
+951, 0xbd52decb5ba0259d
+952, 0xf07939e0ac9edc13
+953, 0xf14dce84156215f9
+954, 0x4ff635c6efd4c0d1
+955, 0x8273d381b00d1da2
+956, 0x2fe4aee0a7dab542
+957, 0x79a485b897698801
+958, 0x8d3f9726bfdec8ce
+959, 0x6daea7b39c0baf5a
+960, 0x8508a8b168841669
+961, 0x4dec7955aa28c99c
+962, 0x6bd02c3a6e4496aa
+963, 0x2c13959a34e93763
+964, 0x1ccace54fdfeb05e
+965, 0x34cad73846788c6f
+966, 0xabb7d3e684c062bd
+967, 0x69c236a70240069c
+968, 0xa53398808da493b2
+969, 0x2b4cfa32cf2603f0
+970, 0x903cde2693c3b0f9
+971, 0x5d556925830a020b
+972, 0x90a63eab0db9352f
+973, 0x351c2d2838792525
+974, 0xe85ceb3486eefb16
+975, 0xfa275cecec8d524d
+976, 0x9f1b20f0dd3ce0d7
+977, 0xceb1490022a7a9cd
+978, 0x1e7b51c976ea3265
+979, 0x5fa85864c857568e
+980, 0x1e7b06ae95db5660
+981, 0xfee282a9657ed8d6
+982, 0x1f2a6fde4761b6b5
+983, 0x1568cbeaba398cdf
+984, 0xe185d2c2cef2cc9c
+985, 0x2933556aa7be334d
+986, 0xec1d06dc69a8a107
+987, 0xa9683634651f5552
+988, 0x8f448642e633fc86
+989, 0xa39ca103aaae4c10
+990, 0x11ca0212139029ff
+991, 0xdea595418a51693d
+992, 0x1b96d86565401fa7
+993, 0x9876432af1ab5f2a
+994, 0xc9630e117c574a52
+995, 0xdc6b6eaa00873b8d
+996, 0xd4456b90b2690f82
+997, 0x38374bbd586d9905
+998, 0x47c96bd123a5f3b4
+999, 0x72ef78391219eb11
diff --git a/numpy/random/tests/data/xoshiro512-testset-2.csv b/numpy/random/tests/data/xoshiro512-testset-2.csv
new file mode 100644
index 000000000..264308f1a
--- /dev/null
+++ b/numpy/random/tests/data/xoshiro512-testset-2.csv
@@ -0,0 +1,1001 @@
+seed, 0x0
+0, 0x99ec5f36cb75f2b4
+1, 0xbf6e1f784956452a
+2, 0x3832e5e4541959a2
+3, 0x25715bafdf7a6b43
+4, 0x8b67fc19f1c8e17f
+5, 0xe950e894acc448c1
+6, 0x940554d2c9b256b2
+7, 0xf9eadc87da09ac92
+8, 0x4bfa499f878ac962
+9, 0x383336b0082c3c49
+10, 0x2863cf13af79512e
+11, 0x498c25ccc5953380
+12, 0xacde7669d72ac701
+13, 0xd8582a2fdda30a73
+14, 0xddae8a5a57c3302
+15, 0x39b75e8fb865dff5
+16, 0x6946963b565b2ba9
+17, 0xa67ec91e011a1aa3
+18, 0xf88116863cba9c94
+19, 0xc3a3c692211c54f8
+20, 0x62e1a84548f3272d
+21, 0x48bfac565faea7dc
+22, 0xe8ec2b5f2ee41403
+23, 0x9f4081dab8c56846
+24, 0x7cf256729df79a61
+25, 0xeede53016acd39f2
+26, 0xb37e90df69310b9c
+27, 0x2975a99504c56251
+28, 0xdb9416723df2752b
+29, 0xc189e2089a8ee16c
+30, 0x39fb60f3d17db683
+31, 0x2b60dda991df7c61
+32, 0x5749b739403062bc
+33, 0xbe7379e4398257e7
+34, 0x21adce8625781175
+35, 0xf9ca19cb6ff09a4a
+36, 0x27689fd07f617a32
+37, 0x656290d3433d9077
+38, 0xc6fba3291a5d6372
+39, 0x8794d1a1bb955db7
+40, 0xc8b037815aab3077
+41, 0x23a02093b144d169
+42, 0x267ad8c80f9caad3
+43, 0x5970a90562008761
+44, 0x7419aa839b2828b6
+45, 0x52dc309a0dfe0f33
+46, 0x10564d319fe055b8
+47, 0xad925ebe373170b0
+48, 0xc38f00ef7258c162
+49, 0x19e6805cbf134b02
+50, 0xa3368cb52e0919a
+51, 0xa543ded14e49d4b6
+52, 0x2cebe96c5f0a953
+53, 0xfd2f810919931d8d
+54, 0x8181b29c373ad4cc
+55, 0x5a03097378f059d6
+56, 0x8e9be6b21fec37b7
+57, 0x37bd0c6e705b5df2
+58, 0x8f1e22e2eb0a869e
+59, 0x1abded820c714cf8
+60, 0xdfc917d8b2bed11
+61, 0xc8d119482cead771
+62, 0xee4b670743624ba5
+63, 0x55fbc8a194bf56e6
+64, 0xb21bc8ce5c709989
+65, 0x77abbb291a079826
+66, 0xabb7e9f7bd35d5be
+67, 0x479866e6b1a66f15
+68, 0xec82d785eae5a82c
+69, 0x2e5d3b0aa0158dc4
+70, 0x2fec4f8b5a8efbfe
+71, 0x885293aa43f8645b
+72, 0x816c016dc41f2dd7
+73, 0x832f06eae4dd19ed
+74, 0xaabacaf4c7840bb7
+75, 0x84e0fd247b0b2412
+76, 0x4ecf02bbf93c2647
+77, 0x1ecf4e8fbab848f8
+78, 0xa7618244187427a
+79, 0xc51c7d4d76a4b4e0
+80, 0x44b7b83127f6cb2
+81, 0x13e717ce99868f93
+82, 0x571466622b4e94e4
+83, 0x6086c22ca249714e
+84, 0x15d182d77b18a109
+85, 0x2b5cbbf2e8092148
+86, 0x33b31ee2e36f9cdd
+87, 0x5ba30dc0c04b381f
+88, 0xf855a989b1146877
+89, 0x8f85aef1e22fcae8
+90, 0x7bb6f96d4b652fb7
+91, 0xf3a2e2b45a2619c9
+92, 0x49bcf25f4d6260a
+93, 0x26640d4f8e246f16
+94, 0x3b3ca907ab2abb1a
+95, 0x2f7a9a3d75f59615
+96, 0xdb63eb1c6172e7fb
+97, 0x1569afee9f7a840d
+98, 0x4fd1b0162e59bc8a
+99, 0x4649428b04932d2b
+100, 0xc504f1aa5e5dea73
+101, 0xc2ccb667a4325d31
+102, 0x9afbfdd5ad3a5204
+103, 0xcc07392e231e5553
+104, 0x6f4d6d195fd22ebb
+105, 0xeb292b5127fb6e18
+106, 0xfe1f960a70442ded
+107, 0x4447c330b74b5933
+108, 0xd21d4046f002efae
+109, 0x8bc90cc78187c57e
+110, 0x4f67494bf7cecee2
+111, 0xbc33ce353c1ddcfd
+112, 0xb891c0a04b0e88f4
+113, 0x8f689f4d0ed5342c
+114, 0xda219cd14be3d102
+115, 0x7c1ddbb38629b680
+116, 0x6c70aa3b93c4f52a
+117, 0x29ec9e21b1dd5d9e
+118, 0xcaeedac16be11bbf
+119, 0x35b5110345859bbf
+120, 0x439d41ea67b37ebb
+121, 0xc6d8d0b7b4f1486a
+122, 0xc52385db44d09080
+123, 0x5f99c2e9ca57b52a
+124, 0xe3254276e855d800
+125, 0xefbd9049da09502c
+126, 0xe6ff8ac6ad006271
+127, 0x2c930e30cb747267
+128, 0x4830da263ba45758
+129, 0x8c60b7ab98006775
+130, 0x7a57c0ea2b570c5a
+131, 0xf70f75d3119e0efd
+132, 0x3e522394beeed598
+133, 0xb7df8f82912f9695
+134, 0x2abb69f78de3c4f1
+135, 0xd51a5b2c0a7bb5cb
+136, 0x89920a17d1de9528
+137, 0xa9d3b9cc614ce21a
+138, 0xddd991172b564698
+139, 0xb4a4642875502ea0
+140, 0x8ddcf309cbfe223e
+141, 0xb08ba3624d1c66b1
+142, 0x54f027d2804b5a93
+143, 0xb07c3b2d04832f27
+144, 0x848ac9c736770aba
+145, 0xc341815ec6b12bf8
+146, 0x3983885191aac395
+147, 0x2c50047012e39883
+148, 0x35762e00ddd30f52
+149, 0x7592ad5f45512761
+150, 0x171247b019c3b822
+151, 0xdf2f59197f67bf2
+152, 0x3d32b07deb6ea68d
+153, 0x333e4f44e437159b
+154, 0x41a72372d89d3e17
+155, 0x8540ef3654d90ba2
+156, 0x87bd219a8adf77f0
+157, 0x81f0bc1fca841bb3
+158, 0xd3200d827a384d0f
+159, 0xd8a9825fadc0be67
+160, 0xe05a6530036bea30
+161, 0xf142901dd1444861
+162, 0xda7d20911dad993d
+163, 0x872847376d5e1231
+164, 0x3907389fdf521b33
+165, 0x90fcc779c427a50a
+166, 0xb49366477e2b48c8
+167, 0xa04ebd5074accf86
+168, 0x3c92343f5469f7c
+169, 0x2b84435bd09b4cb3
+170, 0xb8d4734885fece80
+171, 0xe2fca98eb7e3dc90
+172, 0x5a7f0f454e525193
+173, 0xcc0b1333129c5d2
+174, 0x6433a5896a07730a
+175, 0x892937b8a1f1c314
+176, 0xe4a5b385d69dfb7d
+177, 0xd8cb9ca239d53aef
+178, 0x2cd7af2df788e262
+179, 0x177745f129e94f6c
+180, 0x6a6db6c1ebf163e8
+181, 0x58f2f2e255caafeb
+182, 0x227c81b75d181eb
+183, 0x516d0226e079dbf9
+184, 0x6f66bc3efe0970ed
+185, 0xb295db10d97abd08
+186, 0x99d30a4e4ace9fad
+187, 0xd9d6a16104bd47d0
+188, 0xdc4c2ea12903a427
+189, 0x6334e1f5f5e03adc
+190, 0x9a0cff45fc1bcee8
+191, 0x10874d542fbeec4e
+192, 0x3819c7e7fba3b9bf
+193, 0x1ee786f49b45924b
+194, 0x54723c4712cfb62
+195, 0x3bcca5b2905fb708
+196, 0xf393a7f6ff6a667
+197, 0xaa06af9ce17f62b
+198, 0x48c8f05f3e9d463c
+199, 0x3479d0238b587b2b
+200, 0xa8d8c6670104be96
+201, 0x55814d99b9dfe921
+202, 0xe1ce0f01000d20bd
+203, 0x1014d96a94bf3326
+204, 0x582949045ca618f0
+205, 0x223bae0c2e7f5bc0
+206, 0x4bb41f7d1d9fb622
+207, 0xe1f3e2fd4021d8fd
+208, 0x5ebccfc61d09c4c9
+209, 0xcfdef40545198b7
+210, 0x4ba8ccc2f8c60a64
+211, 0xba1b4fd748b5061
+212, 0x66e32eba41e0939a
+213, 0xa18eed1669d9d315
+214, 0x87c02cfa0ee04b88
+215, 0xfb7c0dfe47ff10b4
+216, 0x865e22c3cbf93ed9
+217, 0xf61e66796f8889b1
+218, 0x3ce89e1af1f9c49c
+219, 0x5df6d8fd03e50c56
+220, 0xe2d84d5a77047da7
+221, 0xf1e4983c4900285f
+222, 0x1c4fdae662cf9ccf
+223, 0x21e8d690e68e9a1a
+224, 0x8bc4a83d32b939b9
+225, 0xca02b1f22175c5ff
+226, 0x38c7e9f4818bb02d
+227, 0x1a0849515278434f
+228, 0x9b5ba0111c7e913c
+229, 0x7f262e2236221eec
+230, 0xbb50a7892f4f3289
+231, 0x61bf32a67a8a37ba
+232, 0x8857a179391d0935
+233, 0xe6e89e905c2c838d
+234, 0x42a4ac61146bc5a3
+235, 0x709439ac10ef9068
+236, 0x101b793f07cebbdb
+237, 0xa15d15f938b270f5
+238, 0xb82363d829a5c246
+239, 0xf472088457296606
+240, 0xa637655483f6a118
+241, 0x8413c67139637302
+242, 0x84e91307377687b7
+243, 0x519f2fdc21adca74
+244, 0x2a57efb29d83c66b
+245, 0x5061e889dbf1432f
+246, 0xffb74ef07814a287
+247, 0xd82936d72d9838e7
+248, 0xfded7b21dc383d9f
+249, 0xc28e1e820fa2d7f3
+250, 0xdad0ba8ae4409211
+251, 0xd7d5ed00366f754
+252, 0xc8f007b6d6161d36
+253, 0x1c4187a9c90e7d87
+254, 0x49fa2c16e3c78424
+255, 0xf3d899da10e89521
+256, 0x89aeb0ade569e3e1
+257, 0x56d3219edcc04b14
+258, 0x5853167abe7fa125
+259, 0x239b40146df96622
+260, 0xa2a70ed13e55aa13
+261, 0x452c6fd65a31f946
+262, 0x771cdf487bb8ea39
+263, 0x458020e1e0355a3
+264, 0x86b71c8ac351f40f
+265, 0x4518b905912e4b44
+266, 0xe59809fb72b59f51
+267, 0xf52f08fabdb424ab
+268, 0x98729bc24ae9b930
+269, 0xd18bea8f222ae2fd
+270, 0xaa5bff6ddbe6cd39
+271, 0x5e6564bdf9d27a0
+272, 0xc1c4658d6d27e065
+273, 0x31d66edddd8655ed
+274, 0x6af3bc60e2b4af07
+275, 0x399c4af6041796ab
+276, 0x17bb479a69a6ed73
+277, 0x2784fe93a28ecaa3
+278, 0xf21f2428f04f3562
+279, 0x8400c729e4bbcaaa
+280, 0xc7b9912613e2277b
+281, 0x4100a49d29d132d8
+282, 0xe83d287fada879af
+283, 0x20512ca7b1735a2e
+284, 0x16d172b52cee39f4
+285, 0x932f40c6356b0681
+286, 0x73b173d7394ebe2f
+287, 0x621f4add757fccb6
+288, 0x7724a21d6908f4b
+289, 0x82723dadae7a25f
+290, 0x917c3b165505d87f
+291, 0x317789982769846d
+292, 0x9118ac495eb78d26
+293, 0xf52b2e19d3ef473
+294, 0xa846c997a4f8604e
+295, 0xf316fca50e1bf909
+296, 0x5fd613d38169c705
+297, 0xfa2c8ac49a16f4d
+298, 0x19382f84f73cc4c5
+299, 0xbbbdf4d883438e9e
+300, 0xd0c0b36f4d4ef8fc
+301, 0x5b57967a9e761eaf
+302, 0x8003a747f3cdc264
+303, 0x67245a0a751da7ad
+304, 0xc8ddd03ef82a0a33
+305, 0xa7c93a1bfd6c820c
+306, 0xf8c05bc5f6fdd20e
+307, 0xd9879192f8295663
+308, 0x180c2ff3e2771469
+309, 0xb17b2159870533e6
+310, 0x34d6c12c9be34bc9
+311, 0x664eb6de3c27d98d
+312, 0xdbb5b1ba134b9d90
+313, 0x68ce417ee1e96b76
+314, 0x2fb7a10f525e5e08
+315, 0xf4d92c47b9a37cad
+316, 0x3fd6bf82bb631c2d
+317, 0x269eb1cd345e8a31
+318, 0xbe940cb0cffd51ee
+319, 0x17f4afb78aad2719
+320, 0xe6418d546742ed86
+321, 0xbbddf550be83c008
+322, 0x21f5abc27624453d
+323, 0xa9c23d6d0fc4cc4a
+324, 0x51dd98db43adfa45
+325, 0x768debf45d278d3a
+326, 0x3c66726469c6d78a
+327, 0x19720ca3ec5c95fe
+328, 0x647128339a9de240
+329, 0x2283bfd5ff7fca46
+330, 0x491c02359844cc18
+331, 0x759e770b8b4ab91e
+332, 0xca1335607f9cb5c8
+333, 0x57622ba5e6ab8e31
+334, 0xe2631640efa27ee1
+335, 0x9a374481132fdcc3
+336, 0xead08fc06ebe7d6e
+337, 0x51f6e040be74899f
+338, 0xef020a2644eea66b
+339, 0xd08de860251ea1af
+340, 0xbbd4224fef793ab5
+341, 0xe32c1f5a20c14b49
+342, 0x41a9c20ee9ab12ff
+343, 0xa4f28d0065e07695
+344, 0x29f6a06ee894dde4
+345, 0xf892525b2a6eacd5
+346, 0xf014392e71ac28e
+347, 0x95fc7879ae3930da
+348, 0x4f6d3fbc928edb34
+349, 0x827c5e01824069df
+350, 0xcc71b97aaf28952b
+351, 0x34ea77a8fee21c5a
+352, 0x1060da2bf2eb6e5d
+353, 0xb5c810ce92166853
+354, 0xe4a3a54ee402b549
+355, 0xfccad41d569a68ba
+356, 0xef7cdfbe1a1dc930
+357, 0xa4fc3447ec16869c
+358, 0x38fd0381051d225d
+359, 0x4588436100fb4666
+360, 0x315ee0679f95d75d
+361, 0xdb3ebac7a80ce68a
+362, 0x711776d978e4144f
+363, 0x76335f1760bf6c69
+364, 0xa0e43f3a570985d8
+365, 0x4acd44aa515c8a2a
+366, 0xeae99aa23e380173
+367, 0x64db0d85601f3581
+368, 0xb251dc038cc5c88d
+369, 0x416acb242805830
+370, 0xc58c8a6f0c958ee5
+371, 0xfca9023592ef2492
+372, 0xe0b53c925afac1d
+373, 0x59ab2f382172a153
+374, 0x5b32526cf9ffddf7
+375, 0xe8f7da4d2ee7d446
+376, 0x54ebb0fad0b278a6
+377, 0xdb347dac25d9f210
+378, 0xe439a5295e5218a7
+379, 0xee108ec20ca6d955
+380, 0xcaeb3ae75ca6a426
+381, 0xd626b91bed8e3cfe
+382, 0xf594cc47bb420358
+383, 0xcb8c06c63f602631
+384, 0xea1bbf343755e2a6
+385, 0x769f8ad9e3e9dd82
+386, 0x5d0004d1952f258b
+387, 0xf696d68c507351d1
+388, 0xcdfd3bef68eeb52f
+389, 0x3d400e8af4240cca
+390, 0x8662dfc98da8bbba
+391, 0x5127c718b4533d93
+392, 0x1628510427094b54
+393, 0xb6d294f5979c4b17
+394, 0x6d03a41585865ea1
+395, 0x96728b5b88e3b111
+396, 0xea45bc46ab6d1e06
+397, 0x53ce57a324130f26
+398, 0x59e439b690174051
+399, 0x7c143c4e625949df
+400, 0xc764c808c3e166a3
+401, 0x6263f53fa2405763
+402, 0x71952cf69bb08e58
+403, 0xfec4e83b29280505
+404, 0xce28f5ba58ef8f6e
+405, 0xebd9e7ab671427a6
+406, 0x4a91ba373ed1de6e
+407, 0xb22b200125627341
+408, 0x8c111548e4a162e5
+409, 0xf4345a7b421b34aa
+410, 0x40ba35f569a690a4
+411, 0xf1031a09b5e1d223
+412, 0xbe1c1a131386bbc
+413, 0x216f8598d1be1586
+414, 0xef45f48c338d8db0
+415, 0xf57e9f4e168b19c8
+416, 0x56e06748363954b6
+417, 0xccd0b383991896f9
+418, 0x4b40d308361e4d23
+419, 0x1ee49bb107ccb9b9
+420, 0xcdfd1ccf20e46b0b
+421, 0x55089ad213e2c33e
+422, 0x2852c242329b05a8
+423, 0xa46180d6534b97ef
+424, 0xbfb5bbe8b1bd13cd
+425, 0xb0bcb564e00214a0
+426, 0x6e9d330e742cf634
+427, 0x7b5b292cfa1b9430
+428, 0x5441cad8cf303e85
+429, 0x1762008ea3eefc9e
+430, 0xa9ade7d73cb4296
+431, 0x98a6316562c0ea4f
+432, 0xc51574eccad0e9fb
+433, 0x677ec01be6893139
+434, 0xb0c7982fbaaee4a2
+435, 0xe07ed42cbb34d46c
+436, 0xafc4634fa786c32d
+437, 0xdaf8b97e6ad7e018
+438, 0x6267f0706ae3a607
+439, 0xca07bd40f70c2e9e
+440, 0x4b25e8c7869abc8e
+441, 0xabbb474aa737636e
+442, 0x410f530d20a6769f
+443, 0xee7d10dba29880d5
+444, 0x61f91eb2ebc3c39e
+445, 0xc02d21d44c280731
+446, 0x7ca6f8eb9d6d3abe
+447, 0x5e3fc57fc5b3ab03
+448, 0xc4b0f5d5d2655632
+449, 0x9b57a16a81ad63b9
+450, 0xc4732d2261781084
+451, 0xbd26679e27f54c19
+452, 0x8eef61d7a56c9d2d
+453, 0x950e4be078a1d146
+454, 0x672e35b94cfafe9
+455, 0x79076d70ef347878
+456, 0x8d0158c3b7af319a
+457, 0x9f9f475701b78fbd
+458, 0x15768b3aabdb75e1
+459, 0x9f00af1f73d4209c
+460, 0x680f425ca7814aa5
+461, 0x4501ef424a132af8
+462, 0xc57a90ca7cec1f2f
+463, 0x708bfd7448c14dd1
+464, 0x3bfcbe7c8840456
+465, 0x6f97402f07bde0a0
+466, 0x8027440e4b178a21
+467, 0x94e947eb94a1c33f
+468, 0xa99d1ab0d9e32c23
+469, 0x3240cb605f629e2a
+470, 0x414086506367a711
+471, 0xb9186fe6279d4965
+472, 0x3f21caccdeb1c91a
+473, 0x13554b8865e173ec
+474, 0x867beb29cf375a21
+475, 0x1f27821ee23885b7
+476, 0xc64f09efbf1b5c69
+477, 0xc8f96ad307b1eaee
+478, 0xea9040a44f9765f2
+479, 0xdf9c784d488953c8
+480, 0xa010bdbdce78972f
+481, 0xbb8ab6017fcb7e5c
+482, 0x8584f4844ad95ef6
+483, 0xc319e59b7efd9aad
+484, 0x7ab487076c4a148f
+485, 0xe5d8c47faa0488a0
+486, 0x4077092e33a0457a
+487, 0x1bf7e7c4f615d7c4
+488, 0xea03b4fb0f4c3902
+489, 0xee72742384d93cc
+490, 0x5bdae630f24c703b
+491, 0x4d47db7fd176b322
+492, 0x4457f591923d3714
+493, 0x4a5cb51e0ce52280
+494, 0x16021446e36cf9ab
+495, 0x87c563540c39d952
+496, 0x18c0cbfa66b443eb
+497, 0xa3edd3ce7632c1f2
+498, 0x2921b28c42e77852
+499, 0xc72e3be0072541bf
+500, 0x988c2deed5403283
+501, 0x510b8765988cd3ad
+502, 0xa86ee406bfa09364
+503, 0xae5e6c62df70a308
+504, 0x28d4790520331444
+505, 0xbb1a0474b2f407d4
+506, 0x6bcfae4cf73c59cd
+507, 0x36695e04107a9f5f
+508, 0x5b1e9ad38395f724
+509, 0xd3157c290d299f2
+510, 0xd084175fa8220b7b
+511, 0x76b0399bdfb66af2
+512, 0x29c3425c62e361ca
+513, 0xe4bf2b3494a19bd8
+514, 0xc9d57df374baba6b
+515, 0xdcee5e50619bf223
+516, 0xa3ba78fa885e6a72
+517, 0xbf34ea44695a8f30
+518, 0x5ddde2254aff3d06
+519, 0x6d1f3041e9879f3
+520, 0xaccd25b0875c2d89
+521, 0xefa539c60700018d
+522, 0x7d3764e10c6d733b
+523, 0x367d61076fe9c3c0
+524, 0x4657ab485775ed78
+525, 0x1ba7888d4f32d223
+526, 0x24ee78667fd08a50
+527, 0xfad3ba97460fae93
+528, 0x4dd200f3b026d7dc
+529, 0x9d4e33c5fef7953f
+530, 0x2ca6fd68615253c9
+531, 0xe3d16805a894838e
+532, 0x10db3a0c972ecdc8
+533, 0x4090524fc5355e3c
+534, 0x27385eae6f429d47
+535, 0x50af78ddc8681d35
+536, 0x1ebe6ea924bcd104
+537, 0x75423f64f5df83e7
+538, 0x876c4860427c720f
+539, 0x8dc8f9407e27a179
+540, 0xedcd4c67c2676676
+541, 0x3341e48a470ebdb8
+542, 0xd4f63685f508ba66
+543, 0x3f6e375d68e34845
+544, 0x11b33ca59e6c3241
+545, 0x40189f7217f8137a
+546, 0x916b0c45129e9a53
+547, 0xc1e91440f5b713bb
+548, 0x414652f46a900767
+549, 0x33310db43b11e46f
+550, 0xff1503c244b4b868
+551, 0x669e43bc981f4223
+552, 0xe27d487e222dc483
+553, 0xb2ae0efe4fef9eae
+554, 0xd8dd8b215c1cfe79
+555, 0x16a80138d4ddcedd
+556, 0xbc6a70ac7a4bcda5
+557, 0x18d80787abf2acfc
+558, 0xecd0532537c2d3cc
+559, 0x993800a80d4446f4
+560, 0x4ea5aeea9f43526
+561, 0x5a8031685b0c1463
+562, 0x31f108fa80921689
+563, 0xb9709186be75599f
+564, 0x3adff9562a928b69
+565, 0x190d15108d41eb7
+566, 0xea7591506a38e4c7
+567, 0x4c91ea0a6340a8c3
+568, 0x919c67ef7a244bbf
+569, 0xe6a76f184ad3d2b
+570, 0x3a9640c5bed1edbc
+571, 0x506ebd2fe9ef89e8
+572, 0x4d0796896388d9c4
+573, 0x2de4c110f7d7d112
+574, 0xe46c7b927d9f79a9
+575, 0xbf0ae3712f8eeae1
+576, 0x3b2984ee35da6a32
+577, 0xc59345b1697baef0
+578, 0xa3473fb9f81cc2df
+579, 0x4454c552a21d642f
+580, 0xca1636a3e911c77f
+581, 0x2d9b63fde30e80fc
+582, 0xaef85088f4d559f1
+583, 0x46544642eecad016
+584, 0x4da4f3f6afd9956
+585, 0xe6e375ac0867fc0a
+586, 0x37d32889b072031e
+587, 0x83fc712194bb9b4f
+588, 0x9fa04dcc1f546c93
+589, 0x11c7883dc79aa96f
+590, 0x1a71d76e8ea10b7c
+591, 0x718279514561c06a
+592, 0xc664454f1de48c18
+593, 0x945794f5dbc5b9b9
+594, 0x3cb32ee274775b53
+595, 0x571676c238e946b6
+596, 0x903cb8f8a39a1994
+597, 0xe63cdce42313cb65
+598, 0xddf3163b47ec269d
+599, 0xb2c5a360383dd417
+600, 0x7bbf55331e3acb3e
+601, 0x5c03cfbcc662c4b3
+602, 0x8cee8a1ce27b0fd0
+603, 0xb3e4f5dcce5e41de
+604, 0xa3c560c653f8d148
+605, 0x9b0803f47ddbbd92
+606, 0x73598c03ae44f0c5
+607, 0xeda1ffa390632e00
+608, 0x1110571306d5e9c0
+609, 0x41ed218f2f65a1b5
+610, 0xe07441e90b230c6e
+611, 0xcde6847873992446
+612, 0xb7d9b5ee4e941a3f
+613, 0x5c9e0ac35e79e606
+614, 0x168d3790aca61ccc
+615, 0x1846981baa478e7c
+616, 0xc1689be15fa49372
+617, 0xddcb4e9701381927
+618, 0xa01ea97bce8344ff
+619, 0xbaf44781cab34255
+620, 0xec241fa1a79901d1
+621, 0xea98acc2951f15ac
+622, 0x1494afaba64e4697
+623, 0xda5136456a210ac1
+624, 0x5fa20a363997390d
+625, 0xb53bbf197e19ce07
+626, 0xde0f31128a00cca2
+627, 0xc605fd5f98698e2a
+628, 0x6796d5719b95d97c
+629, 0xee44914e65e92f5a
+630, 0xb0054098c1bddbe2
+631, 0xad7700d59df9004b
+632, 0xcdf1288400a36d30
+633, 0x8b0f55466049fde1
+634, 0xab9410d6a2a28f3e
+635, 0x4b5adce26df9bbee
+636, 0xb16dcc4180dc7bb7
+637, 0x7657f9213f0dc5e2
+638, 0xc1eb5760b0852f85
+639, 0x8fb3fe1d0faec1d9
+640, 0x2dbbb8a4882f96dd
+641, 0xf4ecd3eaf395f8fa
+642, 0xb258df3c504f12e0
+643, 0x7ac9b40c8f945ed6
+644, 0x8f134be6970b05d9
+645, 0x6ecc9666da7fa595
+646, 0x133361dfb73314dd
+647, 0xb8721ed39e997436
+648, 0x656883492dc738b9
+649, 0x174a3c8f99bf9b85
+650, 0xc09ef0f2df044a07
+651, 0x28c7a240745dff8c
+652, 0x176441c5299c7c50
+653, 0x8f42c91c5e888ade
+654, 0x1512801d9d3d0953
+655, 0x443640b3f1c700f
+656, 0xd83f359def440e5f
+657, 0x9fe61cf5cc1c3aa2
+658, 0xff32bae693ac2f8c
+659, 0xb4c4595dd221d70a
+660, 0xd3437b597e7286c8
+661, 0x2510f2ff588244d8
+662, 0x886154af6e3c0192
+663, 0xd6725d1af0c4a779
+664, 0x4874ef6b5ef6f9e3
+665, 0xbb987030fc6d4ede
+666, 0xa0143e44289ccb48
+667, 0xca3de9e602373a89
+668, 0x78a50b8eed52c7c
+669, 0x7bc6b4f801904167
+670, 0x9d14d691cb0acee5
+671, 0x53d9784fdefd3fa7
+672, 0x2b5457b8912e9095
+673, 0x41f3614d5840ec5
+674, 0xdb1d447cd66f3375
+675, 0x80f3770ee7d84b3f
+676, 0xab9863f7e5a52eae
+677, 0xfc078f48c4b21252
+678, 0xd360cf3d61a05da2
+679, 0xb31a15784218b1b6
+680, 0xdc0a6e5e7a89bf5a
+681, 0xea18995b334e9d69
+682, 0x3e07c668b1f71a31
+683, 0x4ecf7c96be3b06e7
+684, 0xeb3f4dbab3912a0c
+685, 0xf3adfd6a616308c5
+686, 0x7478bc40793ad794
+687, 0xeedca7d9bc381ea9
+688, 0x7b5a77d7b42cc04e
+689, 0xd66ffb33bd6e5616
+690, 0x48d8ef97ac2d0ff7
+691, 0xb1c85985725cab07
+692, 0x669a9762479ad88f
+693, 0x22e49f0ceddf433c
+694, 0xb78bf3ac7e020fc9
+695, 0x3c4939f7654e38d7
+696, 0x6ba6b31e431bf01
+697, 0xe55d5f4848c9e979
+698, 0x5e943e51c4223664
+699, 0x7385c2084ba55b84
+700, 0xedae6a69b96c4181
+701, 0x5498b7fd55f464b4
+702, 0xd889c1a2eb452455
+703, 0x189fd7411f0f9003
+704, 0xd26ce80a290a614a
+705, 0xe17114fdc506bf73
+706, 0xe9e4b0ef791be2f7
+707, 0xcf9fa23043d230e5
+708, 0x3a8dac60f4791a0b
+709, 0xbefc5e64f0603b04
+710, 0x41e622805a016bb2
+711, 0x8a57df661b57fa6f
+712, 0x13a30bb387257625
+713, 0x52a45137bdc9d9d7
+714, 0x6385fcd7f91189f0
+715, 0xb18c44ec584e6de7
+716, 0x6335807f6d6b86fd
+717, 0xd573fb71853ef93a
+718, 0xf6171462c9f74a61
+719, 0x10089f2cad628d2f
+720, 0x96b8d5937d722b85
+721, 0x7376821fe68a497f
+722, 0xb752bcac1c64da57
+723, 0x2a043c4fd7c56683
+724, 0xb9acd886078b8ca8
+725, 0xa137bfd64a2aabfa
+726, 0x7b616af852cfb604
+727, 0x851d36fd60a7a376
+728, 0x1f6612c681686473
+729, 0xeb70d6175c3f21a3
+730, 0x38df2476423bb985
+731, 0x1c8946a1d708676a
+732, 0xe3857fbe776fbcf0
+733, 0x4bccfabc6a7aa9f6
+734, 0xaa79d49af3fb0ad9
+735, 0x8a90ac2c9062949
+736, 0x1bef9e17f6abd7ac
+737, 0x5f834c276df092ed
+738, 0x57451b8f37c655de
+739, 0x9b37a62f91df1c6b
+740, 0xfea0e5e928521dd1
+741, 0x30ae26af2d3d3066
+742, 0x90c7f4fe041cc96f
+743, 0xae3d8a1af5e89491
+744, 0x8654f2cadce2dce3
+745, 0x45b460f2bd49bf46
+746, 0xbb29582042d003d3
+747, 0x29cd1be694c5c95f
+748, 0xbc0ae7374b735c03
+749, 0x4db1a0bc64758878
+750, 0x122c278b74b518c4
+751, 0x4a94e6b50bf51213
+752, 0xf408489bdda60454
+753, 0x791c5da3bf67cb99
+754, 0x83b85caa737261f3
+755, 0x619fe26f59c92f28
+756, 0x6f24d7563749d335
+757, 0x4d5224b378f4356d
+758, 0xa80dece2650eccfe
+759, 0xc537fb63fd483efd
+760, 0x28c5c3cdb5ae2df7
+761, 0xcd66fbab1368c7aa
+762, 0xf2abd0adff7069ca
+763, 0x152fee808d76d3ab
+764, 0x2f21b3a82acb2d08
+765, 0x7eafb15d34cfad1e
+766, 0xa7f1608a241eab5e
+767, 0xe030095ce12c4c10
+768, 0xa0d6ae018a94f4fb
+769, 0x908e2ddca49b6b27
+770, 0x160e2f0b13791c01
+771, 0xc94bcaab64d37b36
+772, 0x9b6d2771f3cab823
+773, 0x877e720beca0fa5e
+774, 0xeab6a692db2c4bb2
+775, 0xbe7c0b35f9c454dd
+776, 0xafd9faefc3c2e26f
+777, 0xc0b313e172484781
+778, 0x802ab792f708ee16
+779, 0x9bb8a1c513145652
+780, 0xb3bb6fbd9ac8b1f5
+781, 0xfd1222d31160e2ac
+782, 0x9e8def9378eb0567
+783, 0x4cb5047d3e7613e9
+784, 0xe870feca80e56b98
+785, 0xa6b53c45c84d5b1b
+786, 0x2cccb2ab07159ff1
+787, 0xbc1532a0b621d08c
+788, 0xc17f60e6e631228c
+789, 0xe231bf2fa4ed9790
+790, 0x9650d2546468aea4
+791, 0x78ed0341e62b1f36
+792, 0x564786e0f06f2136
+793, 0xad67f8e36f21e2a6
+794, 0x14aca551dc2007f4
+795, 0xdaaf21ba99a85718
+796, 0x801993a2b9ccd054
+797, 0xc081b520e3351ae4
+798, 0xb4c2c3a575d98933
+799, 0xee0febb05021f5d9
+800, 0xa8e9bf042c8524c2
+801, 0x62a4e29d5e5b0e32
+802, 0xca47dc23b3267d2d
+803, 0x7dcda2032acfb297
+804, 0x707edefabc363d8c
+805, 0x66ae33b39d40cc26
+806, 0x29af2f7a0dbe3c6c
+807, 0x45bd35e7e7fe3fc8
+808, 0xe2be9934a9386886
+809, 0x1369a648c1f66d4
+810, 0x36771ede37f6912d
+811, 0x29f125e90e92f06a
+812, 0xdf2517a841fe4c35
+813, 0xa07e77e5ac2fa24d
+814, 0xaafc1ab2e8914f7e
+815, 0x64d602ea8eab3138
+816, 0x7dcc67358db459b7
+817, 0x18b3c0f3e2ddc176
+818, 0x3186ebc761499532
+819, 0x26eae2da284bf1fc
+820, 0x2fce764273c3afe8
+821, 0x8d14d487425c3e78
+822, 0x515162b0ca58a70e
+823, 0xc9a51fd0466b0019
+824, 0x6928f5af5674a4a2
+825, 0x23aec98e1759caa1
+826, 0x438f9a8f033d4511
+827, 0x8a6314a76994c55e
+828, 0xa3bef565e65855a2
+829, 0x251c36d1deb6face
+830, 0x221f06d4847ef177
+831, 0x29741abb3ab9b4e4
+832, 0x93c9827eacaa262f
+833, 0x9d91f19aace9c4c9
+834, 0x30038d3da09b76e
+835, 0xcddf978db05ec6cb
+836, 0x798aa80467245bdf
+837, 0x9c26179d57a6263b
+838, 0x2cbdb745276e1c2b
+839, 0xee549998a174e7c5
+840, 0x707933d84e48e90
+841, 0xc1925775d969b667
+842, 0xbac030db93b43a38
+843, 0xa478f204b04d5963
+844, 0xecfc1e66fa00531b
+845, 0x4771b36479d16c0c
+846, 0xfa28373c9c035622
+847, 0xc89c89a3ee2b5365
+848, 0x88a4066f98fa60a2
+849, 0x3d3395c78b0a0111
+850, 0xed59a448861220b6
+851, 0x97574be1b4fbf7cc
+852, 0xe63d52a637907a6b
+853, 0x5ba45d5ae3d14fcd
+854, 0xecfff9b9ce46e911
+855, 0x1aff395024e1670f
+856, 0x80735f71f452b8d0
+857, 0xb35665e1a7090637
+858, 0xb6fc2f8eafbdb100
+859, 0x1f72a04d1ac1ec24
+860, 0xdc6a743a6dfc9a65
+861, 0xc1f2e21f56bf953b
+862, 0x3861b9573b9b211f
+863, 0x1b0b5ebe315c8de6
+864, 0x4a2474209eefeb20
+865, 0x8bf700bea8771d57
+866, 0x5c826e1b9d96e021
+867, 0x3c550882c3e60dd3
+868, 0xbcfc1b474082e0b
+869, 0x36328eb420971300
+870, 0x31f955615998d5c0
+871, 0xefc881172a488a7a
+872, 0x8ae7f46c694723a3
+873, 0x71642de55998b04a
+874, 0x43af19c9ce33d752
+875, 0xb489c13374abc234
+876, 0x3691de307b663328
+877, 0xeef765a5e6839de2
+878, 0xdceb9040010939ee
+879, 0xc402cd11b98f0ab7
+880, 0x714e9a2cb8f045e
+881, 0xf0cabb6fe1a41f30
+882, 0xcf41bc2a41ecfb57
+883, 0x62c24ff5eeb1048b
+884, 0x74a62a4266a09c41
+885, 0xa6ddcbcf7c7af5f4
+886, 0x8534a3d967991eb1
+887, 0xe43dbafd0a4c9311
+888, 0xc0d713b3b8d9dd68
+889, 0x174a9b2d277e1f
+890, 0x8573edcbab177db6
+891, 0x1bcff4d3595158e6
+892, 0x84e938887e7c6066
+893, 0x354130c60d728871
+894, 0xb8dd477ccc07d2a0
+895, 0xc1e30214f9d75b60
+896, 0xce4977c3d243d7fb
+897, 0xf93ba43fa22155b7
+898, 0x1cd39a9065bed6c4
+899, 0x1677daec8a3647cc
+900, 0xce08f421c19266ae
+901, 0xca3ca9ebd2a2669d
+902, 0x7eb68405132fca15
+903, 0x18168b0f0ce8d315
+904, 0xdf241f3d574a968e
+905, 0xe2fa2207e0dbc86a
+906, 0xb8bfb68c1ee88be6
+907, 0xc386a425a0e8ec8b
+908, 0xf60e7ea66674e122
+909, 0xd6b7820405c40e8
+910, 0x84bd5fac533797e7
+911, 0x5acfd875363dcfdb
+912, 0xd0cab73b1d04d65d
+913, 0x8d5cd9a81de7cc92
+914, 0x816b262b71097355
+915, 0x2d28470f662f3ef7
+916, 0xc7ef80c95a450030
+917, 0x18be275d375e8d38
+918, 0x4ebbb686e2fe3832
+919, 0xa15f1c5068711bf
+920, 0x6e3e14f47aab4b11
+921, 0x51d2f11208103b72
+922, 0x4083a7d5788b72f5
+923, 0x5037780b542dc8ce
+924, 0x1df9802ce8610192
+925, 0xba270a3bcbb59d80
+926, 0xce0459574f8a37c
+927, 0x543aaf1a28480574
+928, 0xea92b1cf98896d16
+929, 0x6bfd3baae08a2060
+930, 0x5d9a2b2b76d4ed11
+931, 0x8de7686a95d09d5
+932, 0x392e959b78286928
+933, 0x98fc7a7d1a82e0b5
+934, 0x23f25d04738d1d6d
+935, 0x507922d324dd1207
+936, 0xef809cf741419ad7
+937, 0x3a3ffc65ef3365f3
+938, 0x3eb258435905713f
+939, 0x242386e52078bd9c
+940, 0xa3941556020beac4
+941, 0xbbb020f8e5f4aee2
+942, 0x3373440701bbd45e
+943, 0xa6a36308592401f3
+944, 0x20e5642bed30990a
+945, 0x6c3cce6f512f0c30
+946, 0x61b470467a590ea3
+947, 0xff15bf7dc3ffccb2
+948, 0x23a3c0663725715f
+949, 0x197ea4c617f88f31
+950, 0x6412abc6b559972e
+951, 0x5e963b8491f05790
+952, 0x7b837bd7e43c7b83
+953, 0xccde4023d6b2ba81
+954, 0xa39f9c1d210fdfed
+955, 0xa413f619bdd49c28
+956, 0xd2096d2202caee6c
+957, 0xbbdbb1f4178b9ec4
+958, 0x77d3deb9828dc7ec
+959, 0xdb311ba28eb9b8bf
+960, 0x781905616be8bc25
+961, 0xf7b401fdce0928ac
+962, 0xa29286d380c51201
+963, 0x4f6790854c5fcf9e
+964, 0x95b7e3793eceab8f
+965, 0x77097d01be05b8fd
+966, 0xea6645235d898393
+967, 0xc260212650bb4196
+968, 0xab028439386af2a1
+969, 0xb9c99c6cb6bac542
+970, 0x44597a7ac513a707
+971, 0x7c3503863d73196a
+972, 0x5310606fb739afa0
+973, 0x2b9a1a30b2b82283
+974, 0x442c9600d98d3fd4
+975, 0x56dbbb72bd2fb227
+976, 0x9e137b63c9dfbd47
+977, 0x8c432826c8059484
+978, 0x2a581bd76096803
+979, 0x9bced11dd3da15d4
+980, 0x448d0782fa0e2d56
+981, 0x6fe223ed7981de88
+982, 0xa11abc8ebee400d0
+983, 0x70cfca3c8008b197
+984, 0x6de64d935456ab83
+985, 0x726bdd86810c0d6a
+986, 0x1077e0584ccc4150
+987, 0x64fa38092b2316f9
+988, 0xe3ef337ecdc3b8c5
+989, 0xebc0452bc41c192a
+990, 0x2a81ecd193ab45f9
+991, 0xeb6038f45a865c3a
+992, 0xe7f1e1b3600ec5d2
+993, 0x16897e3406fe264c
+994, 0x2768a1d17fb81ddb
+995, 0x9965317d69c47896
+996, 0x949e16bd19a6c53b
+997, 0x81cc74cdf8fe59ea
+998, 0x180ade029d93ddc6
+999, 0xcfe8717315f3ca1f
diff --git a/numpy/random/tests/test_direct.py b/numpy/random/tests/test_direct.py
new file mode 100644
index 000000000..4ab521d1b
--- /dev/null
+++ b/numpy/random/tests/test_direct.py
@@ -0,0 +1,579 @@
+import os
+from os.path import join
+
+import numpy as np
+from numpy.testing import (assert_equal, assert_allclose, assert_array_equal,
+ assert_raises)
+import pytest
+
+from numpy.random import (Generator, MT19937, DSFMT, ThreeFry, PCG32, PCG64,
+ Philox, Xoshiro256, Xoshiro512, RandomState)
+from numpy.random.common import interface
+
+try:
+ import cffi # noqa: F401
+
+ MISSING_CFFI = False
+except ImportError:
+ MISSING_CFFI = True
+
+try:
+ import ctypes # noqa: F401
+
+ MISSING_CTYPES = False
+except ImportError:
+ MISSING_CTYPES = False
+
+pwd = os.path.dirname(os.path.abspath(__file__))
+
+
+def assert_state_equal(actual, target):
+ for key in actual:
+ if isinstance(actual[key], dict):
+ assert_state_equal(actual[key], target[key])
+ elif isinstance(actual[key], np.ndarray):
+ assert_array_equal(actual[key], target[key])
+ else:
+ assert actual[key] == target[key]
+
+
+def uniform32_from_uint64(x):
+ x = np.uint64(x)
+ upper = np.array(x >> np.uint64(32), dtype=np.uint32)
+ lower = np.uint64(0xffffffff)
+ lower = np.array(x & lower, dtype=np.uint32)
+ joined = np.column_stack([lower, upper]).ravel()
+ out = (joined >> np.uint32(9)) * (1.0 / 2 ** 23)
+ return out.astype(np.float32)
+
+
+def uniform32_from_uint53(x):
+ x = np.uint64(x) >> np.uint64(16)
+ x = np.uint32(x & np.uint64(0xffffffff))
+ out = (x >> np.uint32(9)) * (1.0 / 2 ** 23)
+ return out.astype(np.float32)
+
+
+def uniform32_from_uint32(x):
+ return (x >> np.uint32(9)) * (1.0 / 2 ** 23)
+
+
+def uniform32_from_uint(x, bits):
+ if bits == 64:
+ return uniform32_from_uint64(x)
+ elif bits == 53:
+ return uniform32_from_uint53(x)
+ elif bits == 32:
+ return uniform32_from_uint32(x)
+ else:
+ raise NotImplementedError
+
+
+def uniform_from_uint(x, bits):
+ if bits in (64, 63, 53):
+ return uniform_from_uint64(x)
+ elif bits == 32:
+ return uniform_from_uint32(x)
+
+
+def uniform_from_uint64(x):
+ return (x >> np.uint64(11)) * (1.0 / 9007199254740992.0)
+
+
+def uniform_from_uint32(x):
+ out = np.empty(len(x) // 2)
+ for i in range(0, len(x), 2):
+ a = x[i] >> 5
+ b = x[i + 1] >> 6
+ out[i // 2] = (a * 67108864.0 + b) / 9007199254740992.0
+ return out
+
+
+def uniform_from_dsfmt(x):
+ return x.view(np.double) - 1.0
+
+
+def gauss_from_uint(x, n, bits):
+ if bits in (64, 63):
+ doubles = uniform_from_uint64(x)
+ elif bits == 32:
+ doubles = uniform_from_uint32(x)
+ else: # bits == 'dsfmt'
+ doubles = uniform_from_dsfmt(x)
+ gauss = []
+ loc = 0
+ x1 = x2 = 0.0
+ while len(gauss) < n:
+ r2 = 2
+ while r2 >= 1.0 or r2 == 0.0:
+ x1 = 2.0 * doubles[loc] - 1.0
+ x2 = 2.0 * doubles[loc + 1] - 1.0
+ r2 = x1 * x1 + x2 * x2
+ loc += 2
+
+ f = np.sqrt(-2.0 * np.log(r2) / r2)
+ gauss.append(f * x2)
+ gauss.append(f * x1)
+
+ return gauss[:n]
+
+
+class Base(object):
+ dtype = np.uint64
+ data2 = data1 = {}
+
+ @classmethod
+ def setup_class(cls):
+ cls.bit_generator = Xoshiro256
+ cls.bits = 64
+ cls.dtype = np.uint64
+ cls.seed_error_type = TypeError
+ cls.invalid_seed_types = []
+ cls.invalid_seed_values = []
+
+ @classmethod
+ def _read_csv(cls, filename):
+ with open(filename) as csv:
+ seed = csv.readline()
+ seed = seed.split(',')
+ seed = [int(s.strip(), 0) for s in seed[1:]]
+ data = []
+ for line in csv:
+ data.append(int(line.split(',')[-1].strip(), 0))
+ return {'seed': seed, 'data': np.array(data, dtype=cls.dtype)}
+
+ def test_raw(self):
+ bit_generator = self.bit_generator(*self.data1['seed'])
+ uints = bit_generator.random_raw(1000)
+ assert_equal(uints, self.data1['data'])
+
+ bit_generator = self.bit_generator(*self.data1['seed'])
+ uints = bit_generator.random_raw()
+ assert_equal(uints, self.data1['data'][0])
+
+ bit_generator = self.bit_generator(*self.data2['seed'])
+ uints = bit_generator.random_raw(1000)
+ assert_equal(uints, self.data2['data'])
+
+ def test_random_raw(self):
+ bit_generator = self.bit_generator(*self.data1['seed'])
+ uints = bit_generator.random_raw(output=False)
+ assert uints is None
+ uints = bit_generator.random_raw(1000, output=False)
+ assert uints is None
+
+ def test_gauss_inv(self):
+ n = 25
+ rs = RandomState(self.bit_generator(*self.data1['seed']))
+ gauss = rs.standard_normal(n)
+ assert_allclose(gauss,
+ gauss_from_uint(self.data1['data'], n, self.bits))
+
+ rs = RandomState(self.bit_generator(*self.data2['seed']))
+ gauss = rs.standard_normal(25)
+ assert_allclose(gauss,
+ gauss_from_uint(self.data2['data'], n, self.bits))
+
+ def test_uniform_double(self):
+ rs = Generator(self.bit_generator(*self.data1['seed']))
+ vals = uniform_from_uint(self.data1['data'], self.bits)
+ uniforms = rs.random(len(vals))
+ assert_allclose(uniforms, vals)
+ assert_equal(uniforms.dtype, np.float64)
+
+ rs = Generator(self.bit_generator(*self.data2['seed']))
+ vals = uniform_from_uint(self.data2['data'], self.bits)
+ uniforms = rs.random(len(vals))
+ assert_allclose(uniforms, vals)
+ assert_equal(uniforms.dtype, np.float64)
+
+ def test_uniform_float(self):
+ rs = Generator(self.bit_generator(*self.data1['seed']))
+ vals = uniform32_from_uint(self.data1['data'], self.bits)
+ uniforms = rs.random(len(vals), dtype=np.float32)
+ assert_allclose(uniforms, vals)
+ assert_equal(uniforms.dtype, np.float32)
+
+ rs = Generator(self.bit_generator(*self.data2['seed']))
+ vals = uniform32_from_uint(self.data2['data'], self.bits)
+ uniforms = rs.random(len(vals), dtype=np.float32)
+ assert_allclose(uniforms, vals)
+ assert_equal(uniforms.dtype, np.float32)
+
+ def test_seed_float(self):
+ # GH #82
+ rs = Generator(self.bit_generator(*self.data1['seed']))
+ assert_raises(self.seed_error_type, rs.bit_generator.seed, np.pi)
+ assert_raises(self.seed_error_type, rs.bit_generator.seed, -np.pi)
+
+ def test_seed_float_array(self):
+ # GH #82
+ rs = Generator(self.bit_generator(*self.data1['seed']))
+ assert_raises(self.seed_error_type, rs.bit_generator.seed,
+ np.array([np.pi]))
+ assert_raises(self.seed_error_type, rs.bit_generator.seed,
+ np.array([-np.pi]))
+ assert_raises(ValueError, rs.bit_generator.seed,
+ np.array([np.pi, -np.pi]))
+ assert_raises(TypeError, rs.bit_generator.seed, np.array([0, np.pi]))
+ assert_raises(TypeError, rs.bit_generator.seed, [np.pi])
+ assert_raises(TypeError, rs.bit_generator.seed, [0, np.pi])
+
+ def test_seed_out_of_range(self):
+ # GH #82
+ rs = Generator(self.bit_generator(*self.data1['seed']))
+ assert_raises(ValueError, rs.bit_generator.seed,
+ 2 ** (2 * self.bits + 1))
+ assert_raises(ValueError, rs.bit_generator.seed, -1)
+
+ def test_seed_out_of_range_array(self):
+ # GH #82
+ rs = Generator(self.bit_generator(*self.data1['seed']))
+ assert_raises(ValueError, rs.bit_generator.seed,
+ [2 ** (2 * self.bits + 1)])
+ assert_raises(ValueError, rs.bit_generator.seed, [-1])
+
+ def test_repr(self):
+ rs = Generator(self.bit_generator(*self.data1['seed']))
+ assert 'Generator' in repr(rs)
+ assert '{:#x}'.format(id(rs)).upper().replace('X', 'x') in repr(rs)
+
+ def test_str(self):
+ rs = Generator(self.bit_generator(*self.data1['seed']))
+ assert 'Generator' in str(rs)
+ assert str(self.bit_generator.__name__) in str(rs)
+ assert '{:#x}'.format(id(rs)).upper().replace('X', 'x') not in str(rs)
+
+ def test_pickle(self):
+ import pickle
+
+ bit_generator = self.bit_generator(*self.data1['seed'])
+ state = bit_generator.state
+ bitgen_pkl = pickle.dumps(bit_generator)
+ reloaded = pickle.loads(bitgen_pkl)
+ reloaded_state = reloaded.state
+ assert_array_equal(Generator(bit_generator).standard_normal(1000),
+ Generator(reloaded).standard_normal(1000))
+ assert bit_generator is not reloaded
+ assert_state_equal(reloaded_state, state)
+
+ def test_invalid_state_type(self):
+ bit_generator = self.bit_generator(*self.data1['seed'])
+ with pytest.raises(TypeError):
+ bit_generator.state = {'1'}
+
+ def test_invalid_state_value(self):
+ bit_generator = self.bit_generator(*self.data1['seed'])
+ state = bit_generator.state
+ state['bit_generator'] = 'otherBitGenerator'
+ with pytest.raises(ValueError):
+ bit_generator.state = state
+
+ def test_invalid_seed_type(self):
+ bit_generator = self.bit_generator(*self.data1['seed'])
+ for st in self.invalid_seed_types:
+ with pytest.raises(TypeError):
+ bit_generator.seed(*st)
+
+ def test_invalid_seed_values(self):
+ bit_generator = self.bit_generator(*self.data1['seed'])
+ for st in self.invalid_seed_values:
+ with pytest.raises(ValueError):
+ bit_generator.seed(*st)
+
+ def test_benchmark(self):
+ bit_generator = self.bit_generator(*self.data1['seed'])
+ bit_generator._benchmark(1)
+ bit_generator._benchmark(1, 'double')
+ with pytest.raises(ValueError):
+ bit_generator._benchmark(1, 'int32')
+
+ @pytest.mark.skipif(MISSING_CFFI, reason='cffi not available')
+ def test_cffi(self):
+ bit_generator = self.bit_generator(*self.data1['seed'])
+ cffi_interface = bit_generator.cffi
+ assert isinstance(cffi_interface, interface)
+ other_cffi_interface = bit_generator.cffi
+ assert other_cffi_interface is cffi_interface
+
+ @pytest.mark.skipif(MISSING_CTYPES, reason='ctypes not available')
+ def test_ctypes(self):
+ bit_generator = self.bit_generator(*self.data1['seed'])
+ ctypes_interface = bit_generator.ctypes
+ assert isinstance(ctypes_interface, interface)
+ other_ctypes_interface = bit_generator.ctypes
+ assert other_ctypes_interface is ctypes_interface
+
+ def test_getstate(self):
+ bit_generator = self.bit_generator(*self.data1['seed'])
+ state = bit_generator.state
+ alt_state = bit_generator.__getstate__()
+ assert_state_equal(state, alt_state)
+
+
+class TestXoshiro256(Base):
+ @classmethod
+ def setup_class(cls):
+ cls.bit_generator = Xoshiro256
+ cls.bits = 64
+ cls.dtype = np.uint64
+ cls.data1 = cls._read_csv(
+ join(pwd, './data/xoshiro256-testset-1.csv'))
+ cls.data2 = cls._read_csv(
+ join(pwd, './data/xoshiro256-testset-2.csv'))
+ cls.seed_error_type = TypeError
+ cls.invalid_seed_types = [('apple',), (2 + 3j,), (3.1,)]
+ cls.invalid_seed_values = [(-2,), (np.empty((2, 2), dtype=np.int64),)]
+
+
+class TestXoshiro512(Base):
+ @classmethod
+ def setup_class(cls):
+ cls.bit_generator = Xoshiro512
+ cls.bits = 64
+ cls.dtype = np.uint64
+ cls.data1 = cls._read_csv(
+ join(pwd, './data/xoshiro512-testset-1.csv'))
+ cls.data2 = cls._read_csv(
+ join(pwd, './data/xoshiro512-testset-2.csv'))
+ cls.seed_error_type = TypeError
+ cls.invalid_seed_types = [('apple',), (2 + 3j,), (3.1,)]
+ cls.invalid_seed_values = [(-2,), (np.empty((2, 2), dtype=np.int64),)]
+
+
+class TestThreeFry(Base):
+ @classmethod
+ def setup_class(cls):
+ cls.bit_generator = ThreeFry
+ cls.bits = 64
+ cls.dtype = np.uint64
+ cls.data1 = cls._read_csv(
+ join(pwd, './data/threefry-testset-1.csv'))
+ cls.data2 = cls._read_csv(
+ join(pwd, './data/threefry-testset-2.csv'))
+ cls.seed_error_type = TypeError
+ cls.invalid_seed_types = []
+ cls.invalid_seed_values = [(1, None, 1), (-1,), (2 ** 257 + 1,),
+ (None, None, 2 ** 257 + 1)]
+
+ def test_set_key(self):
+ bit_generator = self.bit_generator(*self.data1['seed'])
+ state = bit_generator.state
+ keyed = self.bit_generator(counter=state['state']['counter'],
+ key=state['state']['key'])
+ assert_state_equal(bit_generator.state, keyed.state)
+
+
+class TestPhilox(Base):
+ @classmethod
+ def setup_class(cls):
+ cls.bit_generator = Philox
+ cls.bits = 64
+ cls.dtype = np.uint64
+ cls.data1 = cls._read_csv(
+ join(pwd, './data/philox-testset-1.csv'))
+ cls.data2 = cls._read_csv(
+ join(pwd, './data/philox-testset-2.csv'))
+ cls.seed_error_type = TypeError
+ cls.invalid_seed_types = []
+ cls.invalid_seed_values = [(1, None, 1), (-1,), (2 ** 257 + 1,),
+ (None, None, 2 ** 257 + 1)]
+
+ def test_set_key(self):
+ bit_generator = self.bit_generator(*self.data1['seed'])
+ state = bit_generator.state
+ keyed = self.bit_generator(counter=state['state']['counter'],
+ key=state['state']['key'])
+ assert_state_equal(bit_generator.state, keyed.state)
+
+
+class TestPCG64(Base):
+ @classmethod
+ def setup_class(cls):
+ cls.bit_generator = PCG64
+ cls.bits = 64
+ cls.dtype = np.uint64
+ cls.data1 = cls._read_csv(join(pwd, './data/pcg64-testset-1.csv'))
+ cls.data2 = cls._read_csv(join(pwd, './data/pcg64-testset-2.csv'))
+ cls.seed_error_type = TypeError
+ cls.invalid_seed_types = [(np.array([1, 2]),), (3.2,),
+ (None, np.zeros(1))]
+ cls.invalid_seed_values = [(-1,), (2 ** 129 + 1,), (None, -1),
+ (None, 2 ** 129 + 1)]
+
+ def test_seed_float_array(self):
+ rs = Generator(self.bit_generator(*self.data1['seed']))
+ assert_raises(self.seed_error_type, rs.bit_generator.seed,
+ np.array([np.pi]))
+ assert_raises(self.seed_error_type, rs.bit_generator.seed,
+ np.array([-np.pi]))
+ assert_raises(self.seed_error_type, rs.bit_generator.seed,
+ np.array([np.pi, -np.pi]))
+ assert_raises(self.seed_error_type, rs.bit_generator.seed,
+ np.array([0, np.pi]))
+ assert_raises(self.seed_error_type, rs.bit_generator.seed, [np.pi])
+ assert_raises(self.seed_error_type, rs.bit_generator.seed, [0, np.pi])
+
+ def test_seed_out_of_range_array(self):
+ rs = Generator(self.bit_generator(*self.data1['seed']))
+ assert_raises(self.seed_error_type, rs.bit_generator.seed,
+ [2 ** (2 * self.bits + 1)])
+ assert_raises(self.seed_error_type, rs.bit_generator.seed, [-1])
+
+
+class TestPCG32(TestPCG64):
+ @classmethod
+ def setup_class(cls):
+ cls.bit_generator = PCG32
+ cls.bits = 32
+ cls.dtype = np.uint32
+ cls.data1 = cls._read_csv(join(pwd, './data/pcg32-testset-1.csv'))
+ cls.data2 = cls._read_csv(join(pwd, './data/pcg32-testset-2.csv'))
+ cls.seed_error_type = TypeError
+ cls.invalid_seed_types = [(np.array([1, 2]),), (3.2,),
+ (None, np.zeros(1))]
+ cls.invalid_seed_values = [(-1,), (2 ** 129 + 1,), (None, -1),
+ (None, 2 ** 129 + 1)]
+
+
+class TestMT19937(Base):
+ @classmethod
+ def setup_class(cls):
+ cls.bit_generator = MT19937
+ cls.bits = 32
+ cls.dtype = np.uint32
+ cls.data1 = cls._read_csv(join(pwd, './data/mt19937-testset-1.csv'))
+ cls.data2 = cls._read_csv(join(pwd, './data/mt19937-testset-2.csv'))
+ cls.seed_error_type = ValueError
+ cls.invalid_seed_types = []
+ cls.invalid_seed_values = [(-1,), np.array([2 ** 33])]
+
+ def test_seed_out_of_range(self):
+ # GH #82
+ rs = Generator(self.bit_generator(*self.data1['seed']))
+ assert_raises(ValueError, rs.bit_generator.seed, 2 ** (self.bits + 1))
+ assert_raises(ValueError, rs.bit_generator.seed, -1)
+ assert_raises(ValueError, rs.bit_generator.seed,
+ 2 ** (2 * self.bits + 1))
+
+ def test_seed_out_of_range_array(self):
+ # GH #82
+ rs = Generator(self.bit_generator(*self.data1['seed']))
+ assert_raises(ValueError, rs.bit_generator.seed,
+ [2 ** (self.bits + 1)])
+ assert_raises(ValueError, rs.bit_generator.seed, [-1])
+ assert_raises(TypeError, rs.bit_generator.seed,
+ [2 ** (2 * self.bits + 1)])
+
+ def test_seed_float(self):
+ # GH #82
+ rs = Generator(self.bit_generator(*self.data1['seed']))
+ assert_raises(TypeError, rs.bit_generator.seed, np.pi)
+ assert_raises(TypeError, rs.bit_generator.seed, -np.pi)
+
+ def test_seed_float_array(self):
+ # GH #82
+ rs = Generator(self.bit_generator(*self.data1['seed']))
+ bit_generator = rs.bit_generator
+ assert_raises(TypeError, bit_generator.seed, np.array([np.pi]))
+ assert_raises(TypeError, bit_generator.seed, np.array([-np.pi]))
+ assert_raises(TypeError, bit_generator.seed, np.array([np.pi, -np.pi]))
+ assert_raises(TypeError, bit_generator.seed, np.array([0, np.pi]))
+ assert_raises(TypeError, bit_generator.seed, [np.pi])
+ assert_raises(TypeError, bit_generator.seed, [0, np.pi])
+
+ def test_state_tuple(self):
+ rs = Generator(self.bit_generator(*self.data1['seed']))
+ bit_generator = rs.bit_generator
+ state = bit_generator.state
+ desired = rs.integers(2 ** 16)
+ tup = (state['bit_generator'], state['state']['key'],
+ state['state']['pos'])
+ bit_generator.state = tup
+ actual = rs.integers(2 ** 16)
+ assert_equal(actual, desired)
+ tup = tup + (0, 0.0)
+ bit_generator.state = tup
+ actual = rs.integers(2 ** 16)
+ assert_equal(actual, desired)
+
+
+class TestDSFMT(Base):
+ @classmethod
+ def setup_class(cls):
+ cls.bit_generator = DSFMT
+ cls.bits = 53
+ cls.dtype = np.uint64
+ cls.data1 = cls._read_csv(join(pwd, './data/dSFMT-testset-1.csv'))
+ cls.data2 = cls._read_csv(join(pwd, './data/dSFMT-testset-2.csv'))
+ cls.seed_error_type = TypeError
+ cls.invalid_seed_types = []
+ cls.invalid_seed_values = [(-1,), np.array([2 ** 33]),
+ (np.array([2 ** 33, 2 ** 33]),)]
+
+ def test_uniform_double(self):
+ rs = Generator(self.bit_generator(*self.data1['seed']))
+ assert_array_equal(uniform_from_dsfmt(self.data1['data']),
+ rs.random(1000))
+
+ rs = Generator(self.bit_generator(*self.data2['seed']))
+ assert_equal(uniform_from_dsfmt(self.data2['data']),
+ rs.random(1000))
+
+ def test_gauss_inv(self):
+ n = 25
+ rs = RandomState(self.bit_generator(*self.data1['seed']))
+ gauss = rs.standard_normal(n)
+ assert_allclose(gauss,
+ gauss_from_uint(self.data1['data'], n, 'dsfmt'))
+
+ rs = RandomState(self.bit_generator(*self.data2['seed']))
+ gauss = rs.standard_normal(25)
+ assert_allclose(gauss,
+ gauss_from_uint(self.data2['data'], n, 'dsfmt'))
+
+ def test_seed_out_of_range_array(self):
+ # GH #82
+ rs = Generator(self.bit_generator(*self.data1['seed']))
+ assert_raises(ValueError, rs.bit_generator.seed,
+ [2 ** (self.bits + 1)])
+ assert_raises(ValueError, rs.bit_generator.seed, [-1])
+ assert_raises(TypeError, rs.bit_generator.seed,
+ [2 ** (2 * self.bits + 1)])
+
+ def test_seed_float(self):
+ # GH #82
+ rs = Generator(self.bit_generator(*self.data1['seed']))
+ assert_raises(TypeError, rs.bit_generator.seed, np.pi)
+ assert_raises(TypeError, rs.bit_generator.seed, -np.pi)
+
+ def test_seed_float_array(self):
+ # GH #82
+ rs = Generator(self.bit_generator(*self.data1['seed']))
+ assert_raises(TypeError, rs.bit_generator.seed, np.array([np.pi]))
+ assert_raises(TypeError, rs.bit_generator.seed, np.array([-np.pi]))
+ assert_raises(TypeError, rs.bit_generator.seed,
+ np.array([np.pi, -np.pi]))
+ assert_raises(TypeError, rs.bit_generator.seed, np.array([0, np.pi]))
+ assert_raises(TypeError, rs.bit_generator.seed, [np.pi])
+ assert_raises(TypeError, rs.bit_generator.seed, [0, np.pi])
+
+ def test_uniform_float(self):
+ rs = Generator(self.bit_generator(*self.data1['seed']))
+ vals = uniform32_from_uint(self.data1['data'], self.bits)
+ uniforms = rs.random(len(vals), dtype=np.float32)
+ assert_allclose(uniforms, vals)
+ assert_equal(uniforms.dtype, np.float32)
+
+ rs = Generator(self.bit_generator(*self.data2['seed']))
+ vals = uniform32_from_uint(self.data2['data'], self.bits)
+ uniforms = rs.random(len(vals), dtype=np.float32)
+ assert_allclose(uniforms, vals)
+ assert_equal(uniforms.dtype, np.float32)
+
+ def test_buffer_reset(self):
+ rs = Generator(self.bit_generator(*self.data1['seed']))
+ rs.random(1)
+ assert rs.bit_generator.state['buffer_loc'] != 382
+ rs.bit_generator.seed(*self.data1['seed'])
+ assert rs.bit_generator.state['buffer_loc'] == 382
diff --git a/numpy/random/tests/test_generator_mt19937.py b/numpy/random/tests/test_generator_mt19937.py
new file mode 100644
index 000000000..192dcce08
--- /dev/null
+++ b/numpy/random/tests/test_generator_mt19937.py
@@ -0,0 +1,2037 @@
+import sys
+
+import pytest
+
+import numpy as np
+from numpy.testing import (
+ assert_, assert_raises, assert_equal,
+ assert_warns, assert_no_warnings, assert_array_equal,
+ assert_array_almost_equal, suppress_warnings)
+
+from numpy.random import Generator, MT19937
+
+random = Generator(MT19937())
+
+
+@pytest.fixture(scope='module', params=[True, False])
+def endpoint(request):
+ return request.param
+
+
+class TestSeed(object):
+ def test_scalar(self):
+ s = Generator(MT19937(0))
+ assert_equal(s.integers(1000), 684)
+ s = Generator(MT19937(4294967295))
+ assert_equal(s.integers(1000), 419)
+
+ def test_array(self):
+ s = Generator(MT19937(range(10)))
+ assert_equal(s.integers(1000), 468)
+ s = Generator(MT19937(np.arange(10)))
+ assert_equal(s.integers(1000), 468)
+ s = Generator(MT19937([0]))
+ assert_equal(s.integers(1000), 973)
+ s = Generator(MT19937([4294967295]))
+ assert_equal(s.integers(1000), 265)
+
+ def test_invalid_scalar(self):
+ # seed must be an unsigned 32 bit integer
+ assert_raises(TypeError, MT19937, -0.5)
+ assert_raises(ValueError, MT19937, -1)
+
+ def test_invalid_array(self):
+ # seed must be an unsigned 32 bit integer
+ assert_raises(TypeError, MT19937, [-0.5])
+ assert_raises(ValueError, MT19937, [-1])
+ assert_raises(ValueError, MT19937, [4294967296])
+ assert_raises(ValueError, MT19937, [1, 2, 4294967296])
+ assert_raises(ValueError, MT19937, [1, -2, 4294967296])
+
+ def test_noninstantized_bitgen(self):
+ assert_raises(ValueError, Generator, MT19937)
+
+
+class TestBinomial(object):
+ def test_n_zero(self):
+ # Tests the corner case of n == 0 for the binomial distribution.
+ # binomial(0, p) should be zero for any p in [0, 1].
+ # This test addresses issue #3480.
+ zeros = np.zeros(2, dtype='int')
+ for p in [0, .5, 1]:
+ assert_(random.binomial(0, p) == 0)
+ assert_array_equal(random.binomial(zeros, p), zeros)
+
+ def test_p_is_nan(self):
+ # Issue #4571.
+ assert_raises(ValueError, random.binomial, 1, np.nan)
+
+
+class TestMultinomial(object):
+ def test_basic(self):
+ random.multinomial(100, [0.2, 0.8])
+
+ def test_zero_probability(self):
+ random.multinomial(100, [0.2, 0.8, 0.0, 0.0, 0.0])
+
+ def test_int_negative_interval(self):
+ assert_(-5 <= random.integers(-5, -1) < -1)
+ x = random.integers(-5, -1, 5)
+ assert_(np.all(-5 <= x))
+ assert_(np.all(x < -1))
+
+ def test_size(self):
+ # gh-3173
+ p = [0.5, 0.5]
+ assert_equal(random.multinomial(1, p, np.uint32(1)).shape, (1, 2))
+ assert_equal(random.multinomial(1, p, np.uint32(1)).shape, (1, 2))
+ assert_equal(random.multinomial(1, p, np.uint32(1)).shape, (1, 2))
+ assert_equal(random.multinomial(1, p, [2, 2]).shape, (2, 2, 2))
+ assert_equal(random.multinomial(1, p, (2, 2)).shape, (2, 2, 2))
+ assert_equal(random.multinomial(1, p, np.array((2, 2))).shape,
+ (2, 2, 2))
+
+ assert_raises(TypeError, random.multinomial, 1, p,
+ float(1))
+
+ def test_invalid_prob(self):
+ assert_raises(ValueError, random.multinomial, 100, [1.1, 0.2])
+ assert_raises(ValueError, random.multinomial, 100, [-.1, 0.9])
+
+ def test_invalid_n(self):
+ assert_raises(ValueError, random.multinomial, -1, [0.8, 0.2])
+ assert_raises(ValueError, random.multinomial, [-1] * 10, [0.8, 0.2])
+
+
+class TestSetState(object):
+ def setup(self):
+ self.seed = 1234567890
+ self.rg = Generator(MT19937(self.seed))
+ self.bit_generator = self.rg.bit_generator
+ self.state = self.bit_generator.state
+ self.legacy_state = (self.state['bit_generator'],
+ self.state['state']['key'],
+ self.state['state']['pos'])
+
+ def test_gaussian_reset(self):
+ # Make sure the cached every-other-Gaussian is reset.
+ old = self.rg.standard_normal(size=3)
+ self.bit_generator.state = self.state
+ new = self.rg.standard_normal(size=3)
+ assert_(np.all(old == new))
+
+ def test_gaussian_reset_in_media_res(self):
+ # When the state is saved with a cached Gaussian, make sure the
+ # cached Gaussian is restored.
+
+ self.rg.standard_normal()
+ state = self.bit_generator.state
+ old = self.rg.standard_normal(size=3)
+ self.bit_generator.state = state
+ new = self.rg.standard_normal(size=3)
+ assert_(np.all(old == new))
+
+ def test_negative_binomial(self):
+ # Ensure that the negative binomial results take floating point
+ # arguments without truncation.
+ self.rg.negative_binomial(0.5, 0.5)
+
+
+class TestIntegers(object):
+ rfunc = random.integers
+
+ # valid integer/boolean types
+ itype = [bool, np.int8, np.uint8, np.int16, np.uint16,
+ np.int32, np.uint32, np.int64, np.uint64]
+
+ def test_unsupported_type(self, endpoint):
+ assert_raises(TypeError, self.rfunc, 1, endpoint=endpoint, dtype=float)
+
+ def test_bounds_checking(self, endpoint):
+ for dt in self.itype:
+ lbnd = 0 if dt is bool else np.iinfo(dt).min
+ ubnd = 2 if dt is bool else np.iinfo(dt).max + 1
+ ubnd = ubnd - 1 if endpoint else ubnd
+ assert_raises(ValueError, self.rfunc, lbnd - 1, ubnd,
+ endpoint=endpoint, dtype=dt)
+ assert_raises(ValueError, self.rfunc, lbnd, ubnd + 1,
+ endpoint=endpoint, dtype=dt)
+ assert_raises(ValueError, self.rfunc, ubnd, lbnd,
+ endpoint=endpoint, dtype=dt)
+ assert_raises(ValueError, self.rfunc, 1, 0, endpoint=endpoint,
+ dtype=dt)
+
+ assert_raises(ValueError, self.rfunc, [lbnd - 1], ubnd,
+ endpoint=endpoint, dtype=dt)
+ assert_raises(ValueError, self.rfunc, [lbnd], [ubnd + 1],
+ endpoint=endpoint, dtype=dt)
+ assert_raises(ValueError, self.rfunc, [ubnd], [lbnd],
+ endpoint=endpoint, dtype=dt)
+ assert_raises(ValueError, self.rfunc, 1, [0],
+ endpoint=endpoint, dtype=dt)
+
+ def test_bounds_checking_array(self, endpoint):
+ for dt in self.itype:
+ lbnd = 0 if dt is bool else np.iinfo(dt).min
+ ubnd = 2 if dt is bool else np.iinfo(dt).max + (not endpoint)
+
+ assert_raises(ValueError, self.rfunc, [lbnd - 1] * 2, [ubnd] * 2,
+ endpoint=endpoint, dtype=dt)
+ assert_raises(ValueError, self.rfunc, [lbnd] * 2,
+ [ubnd + 1] * 2, endpoint=endpoint, dtype=dt)
+ assert_raises(ValueError, self.rfunc, ubnd, [lbnd] * 2,
+ endpoint=endpoint, dtype=dt)
+ assert_raises(ValueError, self.rfunc, [1] * 2, 0,
+ endpoint=endpoint, dtype=dt)
+
+ def test_rng_zero_and_extremes(self, endpoint):
+ for dt in self.itype:
+ lbnd = 0 if dt is bool else np.iinfo(dt).min
+ ubnd = 2 if dt is bool else np.iinfo(dt).max + 1
+ ubnd = ubnd - 1 if endpoint else ubnd
+ is_open = not endpoint
+
+ tgt = ubnd - 1
+ assert_equal(self.rfunc(tgt, tgt + is_open, size=1000,
+ endpoint=endpoint, dtype=dt), tgt)
+ assert_equal(self.rfunc([tgt], tgt + is_open, size=1000,
+ endpoint=endpoint, dtype=dt), tgt)
+
+ tgt = lbnd
+ assert_equal(self.rfunc(tgt, tgt + is_open, size=1000,
+ endpoint=endpoint, dtype=dt), tgt)
+ assert_equal(self.rfunc(tgt, [tgt + is_open], size=1000,
+ endpoint=endpoint, dtype=dt), tgt)
+
+ tgt = (lbnd + ubnd) // 2
+ assert_equal(self.rfunc(tgt, tgt + is_open, size=1000,
+ endpoint=endpoint, dtype=dt), tgt)
+ assert_equal(self.rfunc([tgt], [tgt + is_open],
+ size=1000, endpoint=endpoint, dtype=dt),
+ tgt)
+
+ def test_rng_zero_and_extremes_array(self, endpoint):
+ size = 1000
+ for dt in self.itype:
+ lbnd = 0 if dt is bool else np.iinfo(dt).min
+ ubnd = 2 if dt is bool else np.iinfo(dt).max + 1
+ ubnd = ubnd - 1 if endpoint else ubnd
+
+ tgt = ubnd - 1
+ assert_equal(self.rfunc([tgt], [tgt + 1],
+ size=size, dtype=dt), tgt)
+ assert_equal(self.rfunc(
+ [tgt] * size, [tgt + 1] * size, dtype=dt), tgt)
+ assert_equal(self.rfunc(
+ [tgt] * size, [tgt + 1] * size, size=size, dtype=dt), tgt)
+
+ tgt = lbnd
+ assert_equal(self.rfunc([tgt], [tgt + 1],
+ size=size, dtype=dt), tgt)
+ assert_equal(self.rfunc(
+ [tgt] * size, [tgt + 1] * size, dtype=dt), tgt)
+ assert_equal(self.rfunc(
+ [tgt] * size, [tgt + 1] * size, size=size, dtype=dt), tgt)
+
+ tgt = (lbnd + ubnd) // 2
+ assert_equal(self.rfunc([tgt], [tgt + 1],
+ size=size, dtype=dt), tgt)
+ assert_equal(self.rfunc(
+ [tgt] * size, [tgt + 1] * size, dtype=dt), tgt)
+ assert_equal(self.rfunc(
+ [tgt] * size, [tgt + 1] * size, size=size, dtype=dt), tgt)
+
+ def test_full_range(self, endpoint):
+ # Test for ticket #1690
+
+ for dt in self.itype:
+ lbnd = 0 if dt is bool else np.iinfo(dt).min
+ ubnd = 2 if dt is bool else np.iinfo(dt).max + 1
+ ubnd = ubnd - 1 if endpoint else ubnd
+
+ try:
+ self.rfunc(lbnd, ubnd, endpoint=endpoint, dtype=dt)
+ except Exception as e:
+ raise AssertionError("No error should have been raised, "
+ "but one was with the following "
+ "message:\n\n%s" % str(e))
+
+ def test_full_range_array(self, endpoint):
+ # Test for ticket #1690
+
+ for dt in self.itype:
+ lbnd = 0 if dt is bool else np.iinfo(dt).min
+ ubnd = 2 if dt is bool else np.iinfo(dt).max + 1
+ ubnd = ubnd - 1 if endpoint else ubnd
+
+ try:
+ self.rfunc([lbnd] * 2, [ubnd], endpoint=endpoint, dtype=dt)
+ except Exception as e:
+ raise AssertionError("No error should have been raised, "
+ "but one was with the following "
+ "message:\n\n%s" % str(e))
+
+ def test_in_bounds_fuzz(self, endpoint):
+ # Don't use fixed seed
+ random.bit_generator.seed()
+
+ for dt in self.itype[1:]:
+ for ubnd in [4, 8, 16]:
+ vals = self.rfunc(2, ubnd - endpoint, size=2 ** 16,
+ endpoint=endpoint, dtype=dt)
+ assert_(vals.max() < ubnd)
+ assert_(vals.min() >= 2)
+
+ vals = self.rfunc(0, 2 - endpoint, size=2 ** 16, endpoint=endpoint,
+ dtype=bool)
+ assert_(vals.max() < 2)
+ assert_(vals.min() >= 0)
+
+ def test_scalar_array_equiv(self, endpoint):
+ for dt in self.itype:
+ lbnd = 0 if dt is bool else np.iinfo(dt).min
+ ubnd = 2 if dt is bool else np.iinfo(dt).max + 1
+ ubnd = ubnd - 1 if endpoint else ubnd
+
+ size = 1000
+ random.bit_generator.seed(1234)
+ scalar = self.rfunc(lbnd, ubnd, size=size, endpoint=endpoint,
+ dtype=dt)
+
+ random.bit_generator.seed(1234)
+ scalar_array = self.rfunc([lbnd], [ubnd], size=size,
+ endpoint=endpoint, dtype=dt)
+
+ random.bit_generator.seed(1234)
+ array = self.rfunc([lbnd] * size, [ubnd] *
+ size, size=size, endpoint=endpoint, dtype=dt)
+ assert_array_equal(scalar, scalar_array)
+ assert_array_equal(scalar, array)
+
+ def test_repeatability(self, endpoint):
+ import hashlib
+ # We use a md5 hash of generated sequences of 1000 samples
+ # in the range [0, 6) for all but bool, where the range
+ # is [0, 2). Hashes are for little endian numbers.
+ tgt = {'bool': '7dd3170d7aa461d201a65f8bcf3944b0',
+ 'int16': '1b7741b80964bb190c50d541dca1cac1',
+ 'int32': '4dc9fcc2b395577ebb51793e58ed1a05',
+ 'int64': '17db902806f448331b5a758d7d2ee672',
+ 'int8': '27dd30c4e08a797063dffac2490b0be6',
+ 'uint16': '1b7741b80964bb190c50d541dca1cac1',
+ 'uint32': '4dc9fcc2b395577ebb51793e58ed1a05',
+ 'uint64': '17db902806f448331b5a758d7d2ee672',
+ 'uint8': '27dd30c4e08a797063dffac2490b0be6'}
+
+ for dt in self.itype[1:]:
+ random.bit_generator.seed(1234)
+
+ # view as little endian for hash
+ if sys.byteorder == 'little':
+ val = self.rfunc(0, 6 - endpoint, size=1000, endpoint=endpoint,
+ dtype=dt)
+ else:
+ val = self.rfunc(0, 6 - endpoint, size=1000, endpoint=endpoint,
+ dtype=dt).byteswap()
+
+ res = hashlib.md5(val.view(np.int8)).hexdigest()
+ assert_(tgt[np.dtype(dt).name] == res)
+
+ # bools do not depend on endianness
+ random.bit_generator.seed(1234)
+ val = self.rfunc(0, 2 - endpoint, size=1000, endpoint=endpoint,
+ dtype=bool).view(np.int8)
+ res = hashlib.md5(val).hexdigest()
+ assert_(tgt[np.dtype(bool).name] == res)
+
+ def test_repeatability_broadcasting(self, endpoint):
+ for dt in self.itype:
+ lbnd = 0 if dt in (np.bool, bool, np.bool_) else np.iinfo(dt).min
+ ubnd = 2 if dt in (
+ np.bool, bool, np.bool_) else np.iinfo(dt).max + 1
+ ubnd = ubnd - 1 if endpoint else ubnd
+
+ # view as little endian for hash
+ random.bit_generator.seed(1234)
+ val = self.rfunc(lbnd, ubnd, size=1000, endpoint=endpoint,
+ dtype=dt)
+
+ random.bit_generator.seed(1234)
+ val_bc = self.rfunc([lbnd] * 1000, ubnd, endpoint=endpoint,
+ dtype=dt)
+
+ assert_array_equal(val, val_bc)
+
+ random.bit_generator.seed(1234)
+ val_bc = self.rfunc([lbnd] * 1000, [ubnd] * 1000,
+ endpoint=endpoint, dtype=dt)
+
+ assert_array_equal(val, val_bc)
+
+ def test_int64_uint64_broadcast_exceptions(self, endpoint):
+ configs = {np.uint64: ((0, 2**65), (-1, 2**62), (10, 9), (0, 0)),
+ np.int64: ((0, 2**64), (-(2**64), 2**62), (10, 9), (0, 0),
+ (-2**63-1, -2**63-1))}
+ for dtype in configs:
+ for config in configs[dtype]:
+ low, high = config
+ high = high - endpoint
+ low_a = np.array([[low]*10])
+ high_a = np.array([high] * 10)
+ assert_raises(ValueError, random.integers, low, high,
+ endpoint=endpoint, dtype=dtype)
+ assert_raises(ValueError, random.integers, low_a, high,
+ endpoint=endpoint, dtype=dtype)
+ assert_raises(ValueError, random.integers, low, high_a,
+ endpoint=endpoint, dtype=dtype)
+ assert_raises(ValueError, random.integers, low_a, high_a,
+ endpoint=endpoint, dtype=dtype)
+
+ low_o = np.array([[low]*10], dtype=np.object)
+ high_o = np.array([high] * 10, dtype=np.object)
+ assert_raises(ValueError, random.integers, low_o, high,
+ endpoint=endpoint, dtype=dtype)
+ assert_raises(ValueError, random.integers, low, high_o,
+ endpoint=endpoint, dtype=dtype)
+ assert_raises(ValueError, random.integers, low_o, high_o,
+ endpoint=endpoint, dtype=dtype)
+
+ def test_int64_uint64_corner_case(self, endpoint):
+ # When stored in Numpy arrays, `lbnd` is casted
+ # as np.int64, and `ubnd` is casted as np.uint64.
+ # Checking whether `lbnd` >= `ubnd` used to be
+ # done solely via direct comparison, which is incorrect
+ # because when Numpy tries to compare both numbers,
+ # it casts both to np.float64 because there is
+ # no integer superset of np.int64 and np.uint64. However,
+ # `ubnd` is too large to be represented in np.float64,
+ # causing it be round down to np.iinfo(np.int64).max,
+ # leading to a ValueError because `lbnd` now equals
+ # the new `ubnd`.
+
+ dt = np.int64
+ tgt = np.iinfo(np.int64).max
+ lbnd = np.int64(np.iinfo(np.int64).max)
+ ubnd = np.uint64(np.iinfo(np.int64).max + 1 - endpoint)
+
+ # None of these function calls should
+ # generate a ValueError now.
+ actual = random.integers(lbnd, ubnd, endpoint=endpoint, dtype=dt)
+ assert_equal(actual, tgt)
+
+ def test_respect_dtype_singleton(self, endpoint):
+ # See gh-7203
+ for dt in self.itype:
+ lbnd = 0 if dt is bool else np.iinfo(dt).min
+ ubnd = 2 if dt is bool else np.iinfo(dt).max + 1
+ ubnd = ubnd - 1 if endpoint else ubnd
+ dt = np.bool_ if dt is bool else dt
+
+ sample = self.rfunc(lbnd, ubnd, endpoint=endpoint, dtype=dt)
+ assert_equal(sample.dtype, dt)
+
+ for dt in (bool, int, np.long):
+ lbnd = 0 if dt is bool else np.iinfo(dt).min
+ ubnd = 2 if dt is bool else np.iinfo(dt).max + 1
+ ubnd = ubnd - 1 if endpoint else ubnd
+
+ # gh-7284: Ensure that we get Python data types
+ sample = self.rfunc(lbnd, ubnd, endpoint=endpoint, dtype=dt)
+ assert not hasattr(sample, 'dtype')
+ assert_equal(type(sample), dt)
+
+ def test_respect_dtype_array(self, endpoint):
+ # See gh-7203
+ for dt in self.itype:
+ lbnd = 0 if dt is bool else np.iinfo(dt).min
+ ubnd = 2 if dt is bool else np.iinfo(dt).max + 1
+ ubnd = ubnd - 1 if endpoint else ubnd
+ dt = np.bool_ if dt is bool else dt
+
+ sample = self.rfunc([lbnd], [ubnd], endpoint=endpoint, dtype=dt)
+ assert_equal(sample.dtype, dt)
+ sample = self.rfunc([lbnd] * 2, [ubnd] * 2, endpoint=endpoint,
+ dtype=dt)
+ assert_equal(sample.dtype, dt)
+
+ def test_zero_size(self, endpoint):
+ # See gh-7203
+ for dt in self.itype:
+ sample = self.rfunc(0, 0, (3, 0, 4), endpoint=endpoint, dtype=dt)
+ assert sample.shape == (3, 0, 4)
+ assert sample.dtype == dt
+ assert self.rfunc(0, -10, 0, endpoint=endpoint,
+ dtype=dt).shape == (0,)
+ assert_equal(random.integers(0, 0, size=(3, 0, 4)).shape,
+ (3, 0, 4))
+ assert_equal(random.integers(0, -10, size=0).shape, (0,))
+ assert_equal(random.integers(10, 10, size=0).shape, (0,))
+
+
+class TestRandomDist(object):
+ # Make sure the random distribution returns the correct value for a
+ # given seed
+
+ def setup(self):
+ self.seed = 1234567890
+
+ def test_integers(self):
+ random.bit_generator.seed(self.seed)
+ actual = random.integers(-99, 99, size=(3, 2))
+ desired = np.array([[31, 3],
+ [-52, 41],
+ [-48, -66]])
+ assert_array_equal(actual, desired)
+
+ def test_integers_masked(self):
+ # Test masked rejection sampling algorithm to generate array of
+ # uint32 in an interval.
+ random.bit_generator.seed(self.seed)
+ actual = random.integers(0, 99, size=(3, 2), dtype=np.uint32)
+ desired = np.array([[2, 47],
+ [12, 51],
+ [33, 43]], dtype=np.uint32)
+ assert_array_equal(actual, desired)
+
+ def test_integers_closed(self):
+ random.bit_generator.seed(self.seed)
+ actual = random.integers(-99, 99, size=(3, 2), endpoint=True)
+ desired = np.array([[31, 3],
+ [-52, 41],
+ [-48, -66]])
+ assert_array_equal(actual, desired)
+
+ def test_integers_max_int(self):
+ # Tests whether integers with closed=True can generate the
+ # maximum allowed Python int that can be converted
+ # into a C long. Previous implementations of this
+ # method have thrown an OverflowError when attempting
+ # to generate this integer.
+ actual = random.integers(np.iinfo('l').max, np.iinfo('l').max,
+ endpoint=True)
+
+ desired = np.iinfo('l').max
+ assert_equal(actual, desired)
+
+ def test_random(self):
+ random.bit_generator.seed(self.seed)
+ actual = random.random((3, 2))
+ desired = np.array([[0.61879477158567997, 0.59162362775974664],
+ [0.88868358904449662, 0.89165480011560816],
+ [0.4575674820298663, 0.7781880808593471]])
+ assert_array_almost_equal(actual, desired, decimal=15)
+
+ random.bit_generator.seed(self.seed)
+ actual = random.random()
+ assert_array_almost_equal(actual, desired[0, 0], decimal=15)
+
+ def test_random_float(self):
+ random.bit_generator.seed(self.seed)
+ actual = random.random((3, 2))
+ desired = np.array([[0.6187948, 0.5916236],
+ [0.8886836, 0.8916548],
+ [0.4575675, 0.7781881]])
+ assert_array_almost_equal(actual, desired, decimal=7)
+
+ def test_random_float_scalar(self):
+ random.bit_generator.seed(self.seed)
+ actual = random.random(dtype=np.float32)
+ desired = 0.6187948
+ assert_array_almost_equal(actual, desired, decimal=7)
+
+ def test_random_unsupported_type(self):
+ assert_raises(TypeError, random.random, dtype='int32')
+
+ def test_choice_uniform_replace(self):
+ random.bit_generator.seed(self.seed)
+ actual = random.choice(4, 4)
+ desired = np.array([2, 3, 2, 3], dtype=np.int64)
+ assert_array_equal(actual, desired)
+
+ def test_choice_nonuniform_replace(self):
+ random.bit_generator.seed(self.seed)
+ actual = random.choice(4, 4, p=[0.4, 0.4, 0.1, 0.1])
+ desired = np.array([1, 1, 2, 2], dtype=np.int64)
+ assert_array_equal(actual, desired)
+
+ def test_choice_uniform_noreplace(self):
+ random.bit_generator.seed(self.seed)
+ actual = random.choice(4, 3, replace=False)
+ desired = np.array([0, 2, 3], dtype=np.int64)
+ assert_array_equal(actual, desired)
+
+ def test_choice_nonuniform_noreplace(self):
+ random.bit_generator.seed(self.seed)
+ actual = random.choice(4, 3, replace=False, p=[0.1, 0.3, 0.5, 0.1])
+ desired = np.array([2, 3, 1], dtype=np.int64)
+ assert_array_equal(actual, desired)
+
+ def test_choice_noninteger(self):
+ random.bit_generator.seed(self.seed)
+ actual = random.choice(['a', 'b', 'c', 'd'], 4)
+ desired = np.array(['c', 'd', 'c', 'd'])
+ assert_array_equal(actual, desired)
+
+ def test_choice_multidimensional_default_axis(self):
+ random.bit_generator.seed(self.seed)
+ actual = random.choice([[0, 1], [2, 3], [4, 5], [6, 7]], 3)
+ desired = np.array([[4, 5], [6, 7], [4, 5]])
+ assert_array_equal(actual, desired)
+
+ def test_choice_multidimensional_custom_axis(self):
+ random.bit_generator.seed(self.seed)
+ actual = random.choice([[0, 1], [2, 3], [4, 5], [6, 7]], 1, axis=1)
+ desired = np.array([[0], [2], [4], [6]])
+ assert_array_equal(actual, desired)
+
+ def test_choice_exceptions(self):
+ sample = random.choice
+ assert_raises(ValueError, sample, -1, 3)
+ assert_raises(ValueError, sample, 3., 3)
+ assert_raises(ValueError, sample, [], 3)
+ assert_raises(ValueError, sample, [1, 2, 3, 4], 3,
+ p=[[0.25, 0.25], [0.25, 0.25]])
+ assert_raises(ValueError, sample, [1, 2], 3, p=[0.4, 0.4, 0.2])
+ assert_raises(ValueError, sample, [1, 2], 3, p=[1.1, -0.1])
+ assert_raises(ValueError, sample, [1, 2], 3, p=[0.4, 0.4])
+ assert_raises(ValueError, sample, [1, 2, 3], 4, replace=False)
+ # gh-13087
+ assert_raises(ValueError, sample, [1, 2, 3], -2, replace=False)
+ assert_raises(ValueError, sample, [1, 2, 3], (-1,), replace=False)
+ assert_raises(ValueError, sample, [1, 2, 3], (-1, 1), replace=False)
+ assert_raises(ValueError, sample, [1, 2, 3], 2,
+ replace=False, p=[1, 0, 0])
+
+ def test_choice_return_shape(self):
+ p = [0.1, 0.9]
+ # Check scalar
+ assert_(np.isscalar(random.choice(2, replace=True)))
+ assert_(np.isscalar(random.choice(2, replace=False)))
+ assert_(np.isscalar(random.choice(2, replace=True, p=p)))
+ assert_(np.isscalar(random.choice(2, replace=False, p=p)))
+ assert_(np.isscalar(random.choice([1, 2], replace=True)))
+ assert_(random.choice([None], replace=True) is None)
+ a = np.array([1, 2])
+ arr = np.empty(1, dtype=object)
+ arr[0] = a
+ assert_(random.choice(arr, replace=True) is a)
+
+ # Check 0-d array
+ s = tuple()
+ assert_(not np.isscalar(random.choice(2, s, replace=True)))
+ assert_(not np.isscalar(random.choice(2, s, replace=False)))
+ assert_(not np.isscalar(random.choice(2, s, replace=True, p=p)))
+ assert_(not np.isscalar(random.choice(2, s, replace=False, p=p)))
+ assert_(not np.isscalar(random.choice([1, 2], s, replace=True)))
+ assert_(random.choice([None], s, replace=True).ndim == 0)
+ a = np.array([1, 2])
+ arr = np.empty(1, dtype=object)
+ arr[0] = a
+ assert_(random.choice(arr, s, replace=True).item() is a)
+
+ # Check multi dimensional array
+ s = (2, 3)
+ p = [0.1, 0.1, 0.1, 0.1, 0.4, 0.2]
+ assert_equal(random.choice(6, s, replace=True).shape, s)
+ assert_equal(random.choice(6, s, replace=False).shape, s)
+ assert_equal(random.choice(6, s, replace=True, p=p).shape, s)
+ assert_equal(random.choice(6, s, replace=False, p=p).shape, s)
+ assert_equal(random.choice(np.arange(6), s, replace=True).shape, s)
+
+ # Check zero-size
+ assert_equal(random.integers(0, 0, size=(3, 0, 4)).shape, (3, 0, 4))
+ assert_equal(random.integers(0, -10, size=0).shape, (0,))
+ assert_equal(random.integers(10, 10, size=0).shape, (0,))
+ assert_equal(random.choice(0, size=0).shape, (0,))
+ assert_equal(random.choice([], size=(0,)).shape, (0,))
+ assert_equal(random.choice(['a', 'b'], size=(3, 0, 4)).shape,
+ (3, 0, 4))
+ assert_raises(ValueError, random.choice, [], 10)
+
+ def test_choice_nan_probabilities(self):
+ a = np.array([42, 1, 2])
+ p = [None, None, None]
+ assert_raises(ValueError, random.choice, a, p=p)
+
+ def test_choice_return_type(self):
+ # gh 9867
+ p = np.ones(4) / 4.
+ actual = random.choice(4, 2)
+ assert actual.dtype == np.int64
+ actual = random.choice(4, 2, replace=False)
+ assert actual.dtype == np.int64
+ actual = random.choice(4, 2, p=p)
+ assert actual.dtype == np.int64
+ actual = random.choice(4, 2, p=p, replace=False)
+ assert actual.dtype == np.int64
+
+ def test_choice_large_sample(self):
+ import hashlib
+
+ choice_hash = '6395868be877d27518c832213c17977c'
+ random.bit_generator.seed(self.seed)
+ actual = random.choice(10000, 5000, replace=False)
+ if sys.byteorder != 'little':
+ actual = actual.byteswap()
+ res = hashlib.md5(actual.view(np.int8)).hexdigest()
+ assert_(choice_hash == res)
+
+ def test_bytes(self):
+ random.bit_generator.seed(self.seed)
+ actual = random.bytes(10)
+ desired = b'\x82Ui\x9e\xff\x97+Wf\xa5'
+ assert_equal(actual, desired)
+
+ def test_shuffle(self):
+ # Test lists, arrays (of various dtypes), and multidimensional versions
+ # of both, c-contiguous or not:
+ for conv in [lambda x: np.array([]),
+ lambda x: x,
+ lambda x: np.asarray(x).astype(np.int8),
+ lambda x: np.asarray(x).astype(np.float32),
+ lambda x: np.asarray(x).astype(np.complex64),
+ lambda x: np.asarray(x).astype(object),
+ lambda x: [(i, i) for i in x],
+ lambda x: np.asarray([[i, i] for i in x]),
+ lambda x: np.vstack([x, x]).T,
+ # gh-11442
+ lambda x: (np.asarray([(i, i) for i in x],
+ [("a", int), ("b", int)])
+ .view(np.recarray)),
+ # gh-4270
+ lambda x: np.asarray([(i, i) for i in x],
+ [("a", object, (1,)),
+ ("b", np.int32, (1,))])]:
+ random.bit_generator.seed(self.seed)
+ alist = conv([1, 2, 3, 4, 5, 6, 7, 8, 9, 0])
+ random.shuffle(alist)
+ actual = alist
+ desired = conv([0, 1, 9, 6, 2, 4, 5, 8, 7, 3])
+ assert_array_equal(actual, desired)
+
+ def test_shuffle_masked(self):
+ # gh-3263
+ a = np.ma.masked_values(np.reshape(range(20), (5, 4)) % 3 - 1, -1)
+ b = np.ma.masked_values(np.arange(20) % 3 - 1, -1)
+ a_orig = a.copy()
+ b_orig = b.copy()
+ for i in range(50):
+ random.shuffle(a)
+ assert_equal(
+ sorted(a.data[~a.mask]), sorted(a_orig.data[~a_orig.mask]))
+ random.shuffle(b)
+ assert_equal(
+ sorted(b.data[~b.mask]), sorted(b_orig.data[~b_orig.mask]))
+
+ def test_permutation(self):
+ random.bit_generator.seed(self.seed)
+ alist = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
+ actual = random.permutation(alist)
+ desired = [0, 1, 9, 6, 2, 4, 5, 8, 7, 3]
+ assert_array_equal(actual, desired)
+
+ random.bit_generator.seed(self.seed)
+ arr_2d = np.atleast_2d([1, 2, 3, 4, 5, 6, 7, 8, 9, 0]).T
+ actual = random.permutation(arr_2d)
+ assert_array_equal(actual, np.atleast_2d(desired).T)
+
+ def test_beta(self):
+ random.bit_generator.seed(self.seed)
+ actual = random.beta(.1, .9, size=(3, 2))
+ desired = np.array(
+ [[1.45341850513746058e-02, 5.31297615662868145e-04],
+ [1.85366619058432324e-06, 4.19214516800110563e-03],
+ [1.58405155108498093e-04, 1.26252891949397652e-04]])
+ assert_array_almost_equal(actual, desired, decimal=15)
+
+ def test_binomial(self):
+ random.bit_generator.seed(self.seed)
+ actual = random.binomial(100.123, .456, size=(3, 2))
+ desired = np.array([[37, 43],
+ [42, 48],
+ [46, 45]])
+ assert_array_equal(actual, desired)
+
+ random.bit_generator.seed(self.seed)
+ actual = random.binomial(100.123, .456)
+ desired = 37
+ assert_array_equal(actual, desired)
+
+ def test_chisquare(self):
+ random.bit_generator.seed(self.seed)
+ actual = random.chisquare(50, size=(3, 2))
+ desired = np.array([[22.2534560369812, 46.9302393710074],
+ [52.9974164611614, 85.3559029505718],
+ [46.1580841240719, 36.1933148548090]])
+ assert_array_almost_equal(actual, desired, decimal=13)
+
+ def test_dirichlet(self):
+ random.bit_generator.seed(self.seed)
+ alpha = np.array([51.72840233779265162, 39.74494232180943953])
+ actual = random.dirichlet(alpha, size=(3, 2))
+ desired = np.array([[[0.444382290764855, 0.555617709235145],
+ [0.468440809291970, 0.531559190708030]],
+ [[0.613461427360549, 0.386538572639451],
+ [0.529103072088183, 0.470896927911817]],
+ [[0.513490650101800, 0.486509349898200],
+ [0.558550925712797, 0.441449074287203]]])
+ assert_array_almost_equal(actual, desired, decimal=15)
+ bad_alpha = np.array([5.4e-01, -1.0e-16])
+ assert_raises(ValueError, random.dirichlet, bad_alpha)
+
+ random.bit_generator.seed(self.seed)
+ alpha = np.array([51.72840233779265162, 39.74494232180943953])
+ actual = random.dirichlet(alpha)
+ assert_array_almost_equal(actual, desired[0, 0], decimal=15)
+
+ def test_dirichlet_size(self):
+ # gh-3173
+ p = np.array([51.72840233779265162, 39.74494232180943953])
+ assert_equal(random.dirichlet(p, np.uint32(1)).shape, (1, 2))
+ assert_equal(random.dirichlet(p, np.uint32(1)).shape, (1, 2))
+ assert_equal(random.dirichlet(p, np.uint32(1)).shape, (1, 2))
+ assert_equal(random.dirichlet(p, [2, 2]).shape, (2, 2, 2))
+ assert_equal(random.dirichlet(p, (2, 2)).shape, (2, 2, 2))
+ assert_equal(random.dirichlet(p, np.array((2, 2))).shape, (2, 2, 2))
+
+ assert_raises(TypeError, random.dirichlet, p, float(1))
+
+ def test_dirichlet_bad_alpha(self):
+ # gh-2089
+ alpha = np.array([5.4e-01, -1.0e-16])
+ assert_raises(ValueError, random.dirichlet, alpha)
+
+ def test_exponential(self):
+ random.bit_generator.seed(self.seed)
+ actual = random.exponential(1.1234, size=(3, 2))
+ desired = np.array([[5.350682337747634, 1.152307441755771],
+ [3.867015473358779, 1.538765912839396],
+ [0.347846818048527, 2.715656549872026]])
+ assert_array_almost_equal(actual, desired, decimal=15)
+
+ def test_exponential_0(self):
+ assert_equal(random.exponential(scale=0), 0)
+ assert_raises(ValueError, random.exponential, scale=-0.)
+
+ def test_f(self):
+ random.bit_generator.seed(self.seed)
+ actual = random.f(12, 77, size=(3, 2))
+ desired = np.array([[0.809498839488467, 2.867222762455471],
+ [0.588036831639353, 1.012185639664636],
+ [1.147554281917365, 1.150886518432105]])
+ assert_array_almost_equal(actual, desired, decimal=15)
+
+ def test_gamma(self):
+ random.bit_generator.seed(self.seed)
+ actual = random.gamma(5, 3, size=(3, 2))
+ desired = np.array([[12.46569350177219, 16.46580642087044],
+ [43.65744473309084, 11.98722785682592],
+ [6.50371499559955, 7.48465689751638]])
+ assert_array_almost_equal(actual, desired, decimal=14)
+
+ def test_gamma_0(self):
+ assert_equal(random.gamma(shape=0, scale=0), 0)
+ assert_raises(ValueError, random.gamma, shape=-0., scale=-0.)
+
+ def test_geometric(self):
+ random.bit_generator.seed(self.seed)
+ actual = random.geometric(.123456789, size=(3, 2))
+ desired = np.array([[8, 7],
+ [17, 17],
+ [5, 12]])
+ assert_array_equal(actual, desired)
+
+ def test_geometric_exceptions(self):
+ assert_raises(ValueError, random.geometric, 1.1)
+ assert_raises(ValueError, random.geometric, [1.1] * 10)
+ assert_raises(ValueError, random.geometric, -0.1)
+ assert_raises(ValueError, random.geometric, [-0.1] * 10)
+ with np.errstate(invalid='ignore'):
+ assert_raises(ValueError, random.geometric, np.nan)
+ assert_raises(ValueError, random.geometric, [np.nan] * 10)
+
+ def test_gumbel(self):
+ random.bit_generator.seed(self.seed)
+ actual = random.gumbel(loc=.123456789, scale=2.0, size=(3, 2))
+ desired = np.array([[0.19591898743416816, 0.34405539668096674],
+ [-1.4492522252274278, -1.47374816298446865],
+ [1.10651090478803416, -0.69535848626236174]])
+ assert_array_almost_equal(actual, desired, decimal=15)
+
+ def test_gumbel_0(self):
+ assert_equal(random.gumbel(scale=0), 0)
+ assert_raises(ValueError, random.gumbel, scale=-0.)
+
+ def test_hypergeometric(self):
+ random.bit_generator.seed(self.seed)
+ actual = random.hypergeometric(10.1, 5.5, 14, size=(3, 2))
+ desired = np.array([[10, 10],
+ [10, 10],
+ [9, 9]])
+ assert_array_equal(actual, desired)
+
+ # Test nbad = 0
+ actual = random.hypergeometric(5, 0, 3, size=4)
+ desired = np.array([3, 3, 3, 3])
+ assert_array_equal(actual, desired)
+
+ actual = random.hypergeometric(15, 0, 12, size=4)
+ desired = np.array([12, 12, 12, 12])
+ assert_array_equal(actual, desired)
+
+ # Test ngood = 0
+ actual = random.hypergeometric(0, 5, 3, size=4)
+ desired = np.array([0, 0, 0, 0])
+ assert_array_equal(actual, desired)
+
+ actual = random.hypergeometric(0, 15, 12, size=4)
+ desired = np.array([0, 0, 0, 0])
+ assert_array_equal(actual, desired)
+
+ def test_laplace(self):
+ random.bit_generator.seed(self.seed)
+ actual = random.laplace(loc=.123456789, scale=2.0, size=(3, 2))
+ desired = np.array([[0.66599721112760157, 0.52829452552221945],
+ [3.12791959514407125, 3.18202813572992005],
+ [-0.05391065675859356, 1.74901336242837324]])
+ assert_array_almost_equal(actual, desired, decimal=15)
+
+ def test_laplace_0(self):
+ assert_equal(random.laplace(scale=0), 0)
+ assert_raises(ValueError, random.laplace, scale=-0.)
+
+ def test_logistic(self):
+ random.bit_generator.seed(self.seed)
+ actual = random.logistic(loc=.123456789, scale=2.0, size=(3, 2))
+ desired = np.array([[1.09232835305011444, 0.8648196662399954],
+ [4.27818590694950185, 4.33897006346929714],
+ [-0.21682183359214885, 2.63373365386060332]])
+ assert_array_almost_equal(actual, desired, decimal=15)
+
+ def test_lognormal(self):
+ random.bit_generator.seed(self.seed)
+ actual = random.lognormal(mean=.123456789, sigma=2.0, size=(3, 2))
+ desired = np.array([[1.0894838661036e-03, 9.0990021488311e-01],
+ [6.9178869932225e-01, 2.7672077560016e-01],
+ [2.3248645126975e+00, 1.4609997951330e+00]])
+ assert_array_almost_equal(actual, desired, decimal=13)
+
+ def test_lognormal_0(self):
+ assert_equal(random.lognormal(sigma=0), 1)
+ assert_raises(ValueError, random.lognormal, sigma=-0.)
+
+ def test_logseries(self):
+ random.bit_generator.seed(self.seed)
+ actual = random.logseries(p=.923456789, size=(3, 2))
+ desired = np.array([[2, 2],
+ [6, 17],
+ [3, 6]])
+ assert_array_equal(actual, desired)
+
+ def test_logseries_exceptions(self):
+ with np.errstate(invalid='ignore'):
+ assert_raises(ValueError, random.logseries, np.nan)
+ assert_raises(ValueError, random.logseries, [np.nan] * 10)
+
+ def test_multinomial(self):
+ random.bit_generator.seed(self.seed)
+ actual = random.multinomial(20, [1 / 6.] * 6, size=(3, 2))
+ desired = np.array([[[4, 3, 5, 4, 2, 2],
+ [5, 2, 8, 2, 2, 1]],
+ [[3, 4, 3, 6, 0, 4],
+ [2, 1, 4, 3, 6, 4]],
+ [[4, 4, 2, 5, 2, 3],
+ [4, 3, 4, 2, 3, 4]]])
+ assert_array_equal(actual, desired)
+
+ def test_multivariate_normal(self):
+ random.bit_generator.seed(self.seed)
+ mean = (.123456789, 10)
+ cov = [[1, 0], [0, 1]]
+ size = (3, 2)
+ actual = random.multivariate_normal(mean, cov, size)
+ desired = np.array([[[-3.34929721161096100, 9.891061435770858],
+ [-0.12250896439641100, 9.295898449738300]],
+ [[0.48355927611635563, 10.127832101772366],
+ [3.11093021424924300, 10.283109168794352]],
+ [[-0.20332082341774727, 9.868532121697195],
+ [-1.33806889550667330, 9.813657233804179]]])
+
+ assert_array_almost_equal(actual, desired, decimal=15)
+
+ # Check for default size, was raising deprecation warning
+ actual = random.multivariate_normal(mean, cov)
+ desired = np.array([-1.097443117192574, 10.535787051184261])
+ assert_array_almost_equal(actual, desired, decimal=15)
+
+ # Check that non positive-semidefinite covariance warns with
+ # RuntimeWarning
+ mean = [0, 0]
+ cov = [[1, 2], [2, 1]]
+ assert_warns(RuntimeWarning, random.multivariate_normal, mean, cov)
+
+ # and that it doesn't warn with RuntimeWarning check_valid='ignore'
+ assert_no_warnings(random.multivariate_normal, mean, cov,
+ check_valid='ignore')
+
+ # and that it raises with RuntimeWarning check_valid='raises'
+ assert_raises(ValueError, random.multivariate_normal, mean, cov,
+ check_valid='raise')
+
+ cov = np.array([[1, 0.1], [0.1, 1]], dtype=np.float32)
+ with suppress_warnings() as sup:
+ random.multivariate_normal(mean, cov)
+ w = sup.record(RuntimeWarning)
+ assert len(w) == 0
+
+ mu = np.zeros(2)
+ cov = np.eye(2)
+ assert_raises(ValueError, random.multivariate_normal, mean, cov,
+ check_valid='other')
+ assert_raises(ValueError, random.multivariate_normal,
+ np.zeros((2, 1, 1)), cov)
+ assert_raises(ValueError, random.multivariate_normal,
+ mu, np.empty((3, 2)))
+ assert_raises(ValueError, random.multivariate_normal,
+ mu, np.eye(3))
+
+ def test_negative_binomial(self):
+ random.bit_generator.seed(self.seed)
+ actual = random.negative_binomial(n=100, p=.12345, size=(3, 2))
+ desired = np.array([[521, 736],
+ [665, 690],
+ [723, 751]])
+ assert_array_equal(actual, desired)
+
+ def test_negative_binomial_exceptions(self):
+ with np.errstate(invalid='ignore'):
+ assert_raises(ValueError, random.negative_binomial, 100, np.nan)
+ assert_raises(ValueError, random.negative_binomial, 100,
+ [np.nan] * 10)
+
+ def test_noncentral_chisquare(self):
+ random.bit_generator.seed(self.seed)
+ actual = random.noncentral_chisquare(df=5, nonc=5, size=(3, 2))
+ desired = np.array([[9.47783251920357, 10.02066178260461],
+ [3.15869984192364, 10.5581565031544],
+ [5.01652540543548, 13.7689551218441]])
+ assert_array_almost_equal(actual, desired, decimal=14)
+
+ actual = random.noncentral_chisquare(df=.5, nonc=.2, size=(3, 2))
+ desired = np.array([[0.00145153051285, 0.22432468724778],
+ [0.02956713468556, 0.00207192946898],
+ [1.41985055641800, 0.15451287602753]])
+ assert_array_almost_equal(actual, desired, decimal=14)
+
+ random.bit_generator.seed(self.seed)
+ actual = random.noncentral_chisquare(df=5, nonc=0, size=(3, 2))
+ desired = np.array([[3.64881368071039, 5.48224544747803],
+ [20.41999842025404, 3.44075915187367],
+ [1.29765160605552, 1.64125033268606]])
+ assert_array_almost_equal(actual, desired, decimal=14)
+
+ def test_noncentral_f(self):
+ random.bit_generator.seed(self.seed)
+ actual = random.noncentral_f(dfnum=5, dfden=2, nonc=1,
+ size=(3, 2))
+ desired = np.array([[1.22680230963236, 2.56457837623956],
+ [2.7653304499494, 7.4336268865443],
+ [1.16362730891403, 2.54104276581491]])
+ assert_array_almost_equal(actual, desired, decimal=14)
+
+ def test_noncentral_f_nan(self):
+ random.bit_generator.seed(self.seed)
+ actual = random.noncentral_f(dfnum=5, dfden=2, nonc=np.nan)
+ assert np.isnan(actual)
+
+ def test_normal(self):
+ random.bit_generator.seed(self.seed)
+ actual = random.normal(loc=.123456789, scale=2.0, size=(3, 2))
+ desired = np.array([[-6.822051212221923, -0.094420339458285],
+ [-0.368474717792823, -1.284746311523402],
+ [0.843661763232711, 0.379120992544734]])
+ assert_array_almost_equal(actual, desired, decimal=15)
+
+ def test_normal_0(self):
+ assert_equal(random.normal(scale=0), 0)
+ assert_raises(ValueError, random.normal, scale=-0.)
+
+ def test_pareto(self):
+ random.bit_generator.seed(self.seed)
+ actual = random.pareto(a=.123456789, size=(3, 2))
+ desired = np.array([[5.6883528121891552e+16, 4.0569373841667057e+03],
+ [1.2854967019379475e+12, 6.5833156486851483e+04],
+ [1.1281132447159091e+01, 3.1895968171107006e+08]])
+ # For some reason on 32-bit x86 Ubuntu 12.10 the [1, 0] entry in this
+ # matrix differs by 24 nulps. Discussion:
+ # https://mail.python.org/pipermail/numpy-discussion/2012-September/063801.html
+ # Consensus is that this is probably some gcc quirk that affects
+ # rounding but not in any important way, so we just use a looser
+ # tolerance on this test:
+ np.testing.assert_array_almost_equal_nulp(actual, desired, nulp=30)
+
+ def test_poisson(self):
+ random.bit_generator.seed(self.seed)
+ actual = random.poisson(lam=.123456789, size=(3, 2))
+ desired = np.array([[0, 0],
+ [1, 0],
+ [0, 0]])
+ assert_array_equal(actual, desired)
+
+ def test_poisson_exceptions(self):
+ lambig = np.iinfo('int64').max
+ lamneg = -1
+ assert_raises(ValueError, random.poisson, lamneg)
+ assert_raises(ValueError, random.poisson, [lamneg] * 10)
+ assert_raises(ValueError, random.poisson, lambig)
+ assert_raises(ValueError, random.poisson, [lambig] * 10)
+ with np.errstate(invalid='ignore'):
+ assert_raises(ValueError, random.poisson, np.nan)
+ assert_raises(ValueError, random.poisson, [np.nan] * 10)
+
+ def test_power(self):
+ random.bit_generator.seed(self.seed)
+ actual = random.power(a=.123456789, size=(3, 2))
+ desired = np.array([[9.328833342693975e-01, 2.742250409261003e-02],
+ [7.684513237993961e-01, 9.297548209160028e-02],
+ [2.214811188828573e-05, 4.693448360603472e-01]])
+ assert_array_almost_equal(actual, desired, decimal=15)
+
+ def test_rayleigh(self):
+ random.bit_generator.seed(self.seed)
+ actual = random.rayleigh(scale=10, size=(3, 2))
+ desired = np.array([[13.8882496494248393, 13.383318339044731],
+ [20.95413364294492098, 21.08285015800712614],
+ [11.06066537006854311, 17.35468505778271009]])
+ assert_array_almost_equal(actual, desired, decimal=14)
+
+ def test_rayleigh_0(self):
+ assert_equal(random.rayleigh(scale=0), 0)
+ assert_raises(ValueError, random.rayleigh, scale=-0.)
+
+ def test_standard_cauchy(self):
+ random.bit_generator.seed(self.seed)
+ actual = random.standard_cauchy(size=(3, 2))
+ desired = np.array([[31.87809592667601, 0.349332782046838],
+ [2.816995747731641, 10.552372563459114],
+ [2.485608017991235, 7.843211273201831]])
+ assert_array_almost_equal(actual, desired, decimal=15)
+
+ def test_standard_exponential(self):
+ random.bit_generator.seed(self.seed)
+ actual = random.standard_exponential(size=(3, 2), method='inv')
+ desired = np.array([[0.96441739162374596, 0.89556604882105506],
+ [2.1953785836319808, 2.22243285392490542],
+ [0.6116915921431676, 1.50592546727413201]])
+ assert_array_almost_equal(actual, desired, decimal=15)
+
+ def test_standard_expoential_type_error(self):
+ assert_raises(TypeError, random.standard_exponential, dtype=np.int32)
+
+ def test_standard_gamma(self):
+ random.bit_generator.seed(self.seed)
+ actual = random.standard_gamma(shape=3, size=(3, 2))
+ desired = np.array([[2.28483515569645, 3.29899524967824],
+ [11.12492298902645, 2.16784417297277],
+ [0.92121813690910, 1.12853552328470]])
+ assert_array_almost_equal(actual, desired, decimal=14)
+
+ def test_standard_gammma_scalar_float(self):
+ random.bit_generator.seed(self.seed)
+ actual = random.standard_gamma(3, dtype=np.float32)
+ desired = 1.3877466
+ assert_array_almost_equal(actual, desired, decimal=6)
+
+ def test_standard_gamma_float(self):
+ random.bit_generator.seed(self.seed)
+ actual = random.standard_gamma(shape=3, size=(3, 2))
+ desired = np.array([[2.2848352, 3.2989952],
+ [11.124923, 2.1678442],
+ [0.9212181, 1.1285355]])
+ assert_array_almost_equal(actual, desired, decimal=5)
+
+ def test_standard_gammma_float_out(self):
+ actual = np.zeros((3, 2), dtype=np.float32)
+ random.bit_generator.seed(self.seed)
+ random.standard_gamma(10.0, out=actual, dtype=np.float32)
+ desired = np.array([[6.9824033, 7.3731737],
+ [14.860578, 7.5327270],
+ [11.767487, 6.2320185]], dtype=np.float32)
+ assert_array_almost_equal(actual, desired, decimal=5)
+
+ random.bit_generator.seed(self.seed)
+ random.standard_gamma(10.0, out=actual, size=(3, 2), dtype=np.float32)
+ assert_array_almost_equal(actual, desired, decimal=5)
+
+ def test_standard_gamma_unknown_type(self):
+ assert_raises(TypeError, random.standard_gamma, 1.,
+ dtype='int32')
+
+ def test_out_size_mismatch(self):
+ out = np.zeros(10)
+ assert_raises(ValueError, random.standard_gamma, 10.0, size=20,
+ out=out)
+ assert_raises(ValueError, random.standard_gamma, 10.0, size=(10, 1),
+ out=out)
+
+ def test_standard_gamma_0(self):
+ assert_equal(random.standard_gamma(shape=0), 0)
+ assert_raises(ValueError, random.standard_gamma, shape=-0.)
+
+ def test_standard_normal(self):
+ random.bit_generator.seed(self.seed)
+ actual = random.standard_normal(size=(3, 2))
+ desired = np.array([[-3.472754000610961, -0.108938564229143],
+ [-0.245965753396411, -0.704101550261701],
+ [0.360102487116356, 0.127832101772367]])
+ assert_array_almost_equal(actual, desired, decimal=15)
+
+ def test_standard_normal_unsupported_type(self):
+ assert_raises(TypeError, random.standard_normal, dtype=np.int32)
+
+ def test_standard_t(self):
+ random.bit_generator.seed(self.seed)
+ actual = random.standard_t(df=10, size=(3, 2))
+ desired = np.array([[-3.68722108185508, -0.672031186266171],
+ [2.900224996448669, -0.199656996187739],
+ [-1.12179956985969, 1.85668262342106]])
+ assert_array_almost_equal(actual, desired, decimal=15)
+
+ def test_triangular(self):
+ random.bit_generator.seed(self.seed)
+ actual = random.triangular(left=5.12, mode=10.23, right=20.34,
+ size=(3, 2))
+ desired = np.array([[12.68117178949215784, 12.4129206149193152],
+ [16.20131377335158263, 16.25692138747600524],
+ [11.20400690911820263, 14.4978144835829923]])
+ assert_array_almost_equal(actual, desired, decimal=14)
+
+ def test_uniform(self):
+ random.bit_generator.seed(self.seed)
+ actual = random.uniform(low=1.23, high=10.54, size=(3, 2))
+ desired = np.array([[6.99097932346268003, 6.73801597444323974],
+ [9.50364421400426274, 9.53130618907631089],
+ [5.48995325769805476, 8.47493103280052118]])
+ assert_array_almost_equal(actual, desired, decimal=15)
+
+ def test_uniform_range_bounds(self):
+ fmin = np.finfo('float').min
+ fmax = np.finfo('float').max
+
+ func = random.uniform
+ assert_raises(OverflowError, func, -np.inf, 0)
+ assert_raises(OverflowError, func, 0, np.inf)
+ assert_raises(OverflowError, func, fmin, fmax)
+ assert_raises(OverflowError, func, [-np.inf], [0])
+ assert_raises(OverflowError, func, [0], [np.inf])
+
+ # (fmax / 1e17) - fmin is within range, so this should not throw
+ # account for i386 extended precision DBL_MAX / 1e17 + DBL_MAX >
+ # DBL_MAX by increasing fmin a bit
+ random.uniform(low=np.nextafter(fmin, 1), high=fmax / 1e17)
+
+ def test_scalar_exception_propagation(self):
+ # Tests that exceptions are correctly propagated in distributions
+ # when called with objects that throw exceptions when converted to
+ # scalars.
+ #
+ # Regression test for gh: 8865
+
+ class ThrowingFloat(np.ndarray):
+ def __float__(self):
+ raise TypeError
+
+ throwing_float = np.array(1.0).view(ThrowingFloat)
+ assert_raises(TypeError, random.uniform, throwing_float,
+ throwing_float)
+
+ class ThrowingInteger(np.ndarray):
+ def __int__(self):
+ raise TypeError
+
+ throwing_int = np.array(1).view(ThrowingInteger)
+ assert_raises(TypeError, random.hypergeometric, throwing_int, 1, 1)
+
+ def test_vonmises(self):
+ random.bit_generator.seed(self.seed)
+ actual = random.vonmises(mu=1.23, kappa=1.54, size=(3, 2))
+ desired = np.array([[2.28567572673902042, 2.89163838442285037],
+ [0.38198375564286025, 2.57638023113890746],
+ [1.19153771588353052, 1.83509849681825354]])
+ assert_array_almost_equal(actual, desired, decimal=15)
+
+ def test_vonmises_small(self):
+ # check infinite loop, gh-4720
+ random.bit_generator.seed(self.seed)
+ r = random.vonmises(mu=0., kappa=1.1e-8, size=10**6)
+ assert_(np.isfinite(r).all())
+
+ def test_vonmises_nan(self):
+ random.bit_generator.seed(self.seed)
+ r = random.vonmises(mu=0., kappa=np.nan)
+ assert_(np.isnan(r))
+
+ def test_wald(self):
+ random.bit_generator.seed(self.seed)
+ actual = random.wald(mean=1.23, scale=1.54, size=(3, 2))
+ desired = np.array([[0.10653278160339, 0.98771068102461],
+ [0.89276055317879, 0.13640126419923],
+ [0.9194319091599, 0.36037816317472]])
+ assert_array_almost_equal(actual, desired, decimal=14)
+
+ def test_weibull(self):
+ random.bit_generator.seed(self.seed)
+ actual = random.weibull(a=1.23, size=(3, 2))
+ desired = np.array([[3.557276979846361, 1.020870580998542],
+ [2.731847777612348, 1.29148068905082],
+ [0.385531483942839, 2.049551716717254]])
+ assert_array_almost_equal(actual, desired, decimal=15)
+
+ def test_weibull_0(self):
+ random.bit_generator.seed(self.seed)
+ assert_equal(random.weibull(a=0, size=12), np.zeros(12))
+ assert_raises(ValueError, random.weibull, a=-0.)
+
+ def test_zipf(self):
+ random.bit_generator.seed(self.seed)
+ actual = random.zipf(a=1.23, size=(3, 2))
+ desired = np.array([[66, 29],
+ [1, 1],
+ [3, 13]])
+ assert_array_equal(actual, desired)
+
+
+class TestBroadcast(object):
+ # tests that functions that broadcast behave
+ # correctly when presented with non-scalar arguments
+ def setup(self):
+ self.seed = 123456789
+
+ def set_seed(self):
+ random.bit_generator.seed(self.seed)
+
+ def test_uniform(self):
+ low = [0]
+ high = [1]
+ uniform = random.uniform
+ desired = np.array([0.53283302478975902,
+ 0.53413660089041659,
+ 0.50955303552646702])
+
+ self.set_seed()
+ actual = uniform(low * 3, high)
+ assert_array_almost_equal(actual, desired, decimal=14)
+
+ self.set_seed()
+ actual = uniform(low, high * 3)
+ assert_array_almost_equal(actual, desired, decimal=14)
+
+ def test_normal(self):
+ loc = [0]
+ scale = [1]
+ bad_scale = [-1]
+ normal = random.normal
+ desired = np.array([0.454879818179180,
+ -0.62749179463661,
+ -0.06063266769872])
+
+ self.set_seed()
+ actual = normal(loc * 3, scale)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, normal, loc * 3, bad_scale)
+ assert_raises(ValueError, random.normal, loc * 3, bad_scale)
+
+ self.set_seed()
+ actual = normal(loc, scale * 3)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, normal, loc, bad_scale * 3)
+ assert_raises(ValueError, random.normal, loc, bad_scale * 3)
+
+ def test_beta(self):
+ a = [1]
+ b = [2]
+ bad_a = [-1]
+ bad_b = [-2]
+ beta = random.beta
+ desired = np.array([0.63222080311226,
+ 0.33310522220774,
+ 0.64494078460190])
+
+ self.set_seed()
+ actual = beta(a * 3, b)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, beta, bad_a * 3, b)
+ assert_raises(ValueError, beta, a * 3, bad_b)
+
+ self.set_seed()
+ actual = beta(a, b * 3)
+ assert_array_almost_equal(actual, desired, decimal=14)
+
+ def test_exponential(self):
+ scale = [1]
+ bad_scale = [-1]
+ exponential = random.exponential
+ desired = np.array([1.68591211640990,
+ 3.14186859487914,
+ 0.67717375919228])
+
+ self.set_seed()
+ actual = exponential(scale * 3)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, exponential, bad_scale * 3)
+
+ def test_standard_gamma(self):
+ shape = [1]
+ bad_shape = [-1]
+ std_gamma = random.standard_gamma
+ desired = np.array([1.68591211640990,
+ 3.14186859487914,
+ 0.67717375919228])
+
+ self.set_seed()
+ actual = std_gamma(shape * 3)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, std_gamma, bad_shape * 3)
+
+ def test_gamma(self):
+ shape = [1]
+ scale = [2]
+ bad_shape = [-1]
+ bad_scale = [-2]
+ gamma = random.gamma
+ desired = np.array([3.37182423281980,
+ 6.28373718975827,
+ 1.35434751838456])
+
+ self.set_seed()
+ actual = gamma(shape * 3, scale)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, gamma, bad_shape * 3, scale)
+ assert_raises(ValueError, gamma, shape * 3, bad_scale)
+
+ self.set_seed()
+ actual = gamma(shape, scale * 3)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, gamma, bad_shape, scale * 3)
+ assert_raises(ValueError, gamma, shape, bad_scale * 3)
+
+ def test_f(self):
+ dfnum = [1]
+ dfden = [2]
+ bad_dfnum = [-1]
+ bad_dfden = [-2]
+ f = random.f
+ desired = np.array([0.84207044881810,
+ 3.08607209903483,
+ 3.12823105933169])
+
+ self.set_seed()
+ actual = f(dfnum * 3, dfden)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, f, bad_dfnum * 3, dfden)
+ assert_raises(ValueError, f, dfnum * 3, bad_dfden)
+
+ self.set_seed()
+ actual = f(dfnum, dfden * 3)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, f, bad_dfnum, dfden * 3)
+ assert_raises(ValueError, f, dfnum, bad_dfden * 3)
+
+ def test_noncentral_f(self):
+ dfnum = [2]
+ dfden = [3]
+ nonc = [4]
+ bad_dfnum = [0]
+ bad_dfden = [-1]
+ bad_nonc = [-2]
+ nonc_f = random.noncentral_f
+ desired = np.array([3.83710578542563,
+ 8.74926819712029,
+ 0.48892943835401])
+
+ self.set_seed()
+ actual = nonc_f(dfnum * 3, dfden, nonc)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert np.all(np.isnan(nonc_f(dfnum, dfden, [np.nan] * 3)))
+
+ assert_raises(ValueError, nonc_f, bad_dfnum * 3, dfden, nonc)
+ assert_raises(ValueError, nonc_f, dfnum * 3, bad_dfden, nonc)
+ assert_raises(ValueError, nonc_f, dfnum * 3, dfden, bad_nonc)
+
+ self.set_seed()
+ actual = nonc_f(dfnum, dfden * 3, nonc)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, nonc_f, bad_dfnum, dfden * 3, nonc)
+ assert_raises(ValueError, nonc_f, dfnum, bad_dfden * 3, nonc)
+ assert_raises(ValueError, nonc_f, dfnum, dfden * 3, bad_nonc)
+
+ self.set_seed()
+ actual = nonc_f(dfnum, dfden, nonc * 3)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, nonc_f, bad_dfnum, dfden, nonc * 3)
+ assert_raises(ValueError, nonc_f, dfnum, bad_dfden, nonc * 3)
+ assert_raises(ValueError, nonc_f, dfnum, dfden, bad_nonc * 3)
+
+ def test_noncentral_f_small_df(self):
+ self.set_seed()
+ desired = np.array([21.57878070681719, 1.17110217503908])
+ actual = random.noncentral_f(0.9, 0.9, 2, size=2)
+ assert_array_almost_equal(actual, desired, decimal=14)
+
+ def test_chisquare(self):
+ df = [1]
+ bad_df = [-1]
+ chisquare = random.chisquare
+ desired = np.array([0.57022801133088286,
+ 0.51947702108840776,
+ 0.1320969254923558])
+
+ self.set_seed()
+ actual = chisquare(df * 3)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, chisquare, bad_df * 3)
+
+ def test_noncentral_chisquare(self):
+ df = [1]
+ nonc = [2]
+ bad_df = [-1]
+ bad_nonc = [-2]
+ nonc_chi = random.noncentral_chisquare
+ desired = np.array([2.20478739452297,
+ 1.45177405755115,
+ 1.00418921695354])
+
+ self.set_seed()
+ actual = nonc_chi(df * 3, nonc)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, nonc_chi, bad_df * 3, nonc)
+ assert_raises(ValueError, nonc_chi, df * 3, bad_nonc)
+
+ self.set_seed()
+ actual = nonc_chi(df, nonc * 3)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, nonc_chi, bad_df, nonc * 3)
+ assert_raises(ValueError, nonc_chi, df, bad_nonc * 3)
+
+ def test_standard_t(self):
+ df = [1]
+ bad_df = [-1]
+ t = random.standard_t
+ desired = np.array([0.60081050724244,
+ -0.90380889829210,
+ -0.64499590504117])
+
+ self.set_seed()
+ actual = t(df * 3)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, t, bad_df * 3)
+ assert_raises(ValueError, random.standard_t, bad_df * 3)
+
+ def test_vonmises(self):
+ mu = [2]
+ kappa = [1]
+ bad_kappa = [-1]
+ vonmises = random.vonmises
+ desired = np.array([2.9883443664201312,
+ -2.7064099483995943,
+ -1.8672476700665914])
+
+ self.set_seed()
+ actual = vonmises(mu * 3, kappa)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, vonmises, mu * 3, bad_kappa)
+
+ self.set_seed()
+ actual = vonmises(mu, kappa * 3)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, vonmises, mu, bad_kappa * 3)
+
+ def test_pareto(self):
+ a = [1]
+ bad_a = [-1]
+ pareto = random.pareto
+ desired = np.array([4.397371719158540,
+ 22.14707898642946,
+ 0.968306954322200])
+
+ self.set_seed()
+ actual = pareto(a * 3)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, pareto, bad_a * 3)
+ assert_raises(ValueError, random.pareto, bad_a * 3)
+
+ def test_weibull(self):
+ a = [1]
+ bad_a = [-1]
+ weibull = random.weibull
+ desired = np.array([1.68591211640990,
+ 3.14186859487914,
+ 0.67717375919228])
+
+ self.set_seed()
+ actual = weibull(a * 3)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, weibull, bad_a * 3)
+ assert_raises(ValueError, random.weibull, bad_a * 3)
+
+ def test_power(self):
+ a = [1]
+ bad_a = [-1]
+ power = random.power
+ desired = np.array([0.81472463783615,
+ 0.95679800459547,
+ 0.49194916077287])
+
+ self.set_seed()
+ actual = power(a * 3)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, power, bad_a * 3)
+ assert_raises(ValueError, random.power, bad_a * 3)
+
+ def test_laplace(self):
+ loc = [0]
+ scale = [1]
+ bad_scale = [-1]
+ laplace = random.laplace
+ desired = np.array([0.067921356028507157,
+ 0.070715642226971326,
+ 0.019290950698972624])
+
+ self.set_seed()
+ actual = laplace(loc * 3, scale)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, laplace, loc * 3, bad_scale)
+
+ self.set_seed()
+ actual = laplace(loc, scale * 3)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, laplace, loc, bad_scale * 3)
+
+ def test_gumbel(self):
+ loc = [0]
+ scale = [1]
+ bad_scale = [-1]
+ gumbel = random.gumbel
+ desired = np.array([0.2730318639556768,
+ 0.26936705726291116,
+ 0.33906220393037939])
+
+ self.set_seed()
+ actual = gumbel(loc * 3, scale)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, gumbel, loc * 3, bad_scale)
+
+ self.set_seed()
+ actual = gumbel(loc, scale * 3)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, gumbel, loc, bad_scale * 3)
+
+ def test_logistic(self):
+ loc = [0]
+ scale = [1]
+ bad_scale = [-1]
+ logistic = random.logistic
+ desired = np.array([0.13152135837586171,
+ 0.13675915696285773,
+ 0.038216792802833396])
+
+ self.set_seed()
+ actual = logistic(loc * 3, scale)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, logistic, loc * 3, bad_scale)
+
+ self.set_seed()
+ actual = logistic(loc, scale * 3)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, logistic, loc, bad_scale * 3)
+ assert_equal(random.logistic(1.0, 0.0), 1.0)
+
+ def test_lognormal(self):
+ mean = [0]
+ sigma = [1]
+ bad_sigma = [-1]
+ lognormal = random.lognormal
+ desired = np.array([1.57598396702930,
+ 0.53392932731280,
+ 0.94116889802361])
+
+ self.set_seed()
+ actual = lognormal(mean * 3, sigma)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, lognormal, mean * 3, bad_sigma)
+ assert_raises(ValueError, random.lognormal, mean * 3, bad_sigma)
+
+ self.set_seed()
+ actual = lognormal(mean, sigma * 3)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, lognormal, mean, bad_sigma * 3)
+ assert_raises(ValueError, random.lognormal, mean, bad_sigma * 3)
+
+ def test_rayleigh(self):
+ scale = [1]
+ bad_scale = [-1]
+ rayleigh = random.rayleigh
+ desired = np.array([1.2337491937897689,
+ 1.2360119924878694,
+ 1.1936818095781789])
+
+ self.set_seed()
+ actual = rayleigh(scale * 3)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, rayleigh, bad_scale * 3)
+
+ def test_wald(self):
+ mean = [0.5]
+ scale = [1]
+ bad_mean = [0]
+ bad_scale = [-2]
+ wald = random.wald
+ desired = np.array([0.36297361471752,
+ 0.52190135028254,
+ 0.55111022040727])
+
+ self.set_seed()
+ actual = wald(mean * 3, scale)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, wald, bad_mean * 3, scale)
+ assert_raises(ValueError, wald, mean * 3, bad_scale)
+ assert_raises(ValueError, random.wald, bad_mean * 3, scale)
+ assert_raises(ValueError, random.wald, mean * 3, bad_scale)
+
+ self.set_seed()
+ actual = wald(mean, scale * 3)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, wald, bad_mean, scale * 3)
+ assert_raises(ValueError, wald, mean, bad_scale * 3)
+ assert_raises(ValueError, random.wald, bad_mean, scale * 3)
+ assert_raises(ValueError, random.wald, mean, bad_scale * 3)
+
+ def test_triangular(self):
+ left = [1]
+ right = [3]
+ mode = [2]
+ bad_left_one = [3]
+ bad_mode_one = [4]
+ bad_left_two, bad_mode_two = right * 2
+ triangular = random.triangular
+ desired = np.array([2.03339048710429,
+ 2.0347400359389356,
+ 2.0095991069536208])
+
+ self.set_seed()
+ actual = triangular(left * 3, mode, right)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, triangular, bad_left_one * 3, mode, right)
+ assert_raises(ValueError, triangular, left * 3, bad_mode_one, right)
+ assert_raises(ValueError, triangular, bad_left_two * 3, bad_mode_two,
+ right)
+
+ self.set_seed()
+ actual = triangular(left, mode * 3, right)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, triangular, bad_left_one, mode * 3, right)
+ assert_raises(ValueError, triangular, left, bad_mode_one * 3, right)
+ assert_raises(ValueError, triangular, bad_left_two, bad_mode_two * 3,
+ right)
+
+ self.set_seed()
+ actual = triangular(left, mode, right * 3)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, triangular, bad_left_one, mode, right * 3)
+ assert_raises(ValueError, triangular, left, bad_mode_one, right * 3)
+ assert_raises(ValueError, triangular, bad_left_two, bad_mode_two,
+ right * 3)
+
+ assert_raises(ValueError, triangular, 10., 0., 20.)
+ assert_raises(ValueError, triangular, 10., 25., 20.)
+ assert_raises(ValueError, triangular, 10., 10., 10.)
+
+ def test_binomial(self):
+ n = [1]
+ p = [0.5]
+ bad_n = [-1]
+ bad_p_one = [-1]
+ bad_p_two = [1.5]
+ binom = random.binomial
+ desired = np.array([1, 1, 1])
+
+ self.set_seed()
+ actual = binom(n * 3, p)
+ assert_array_equal(actual, desired)
+ assert_raises(ValueError, binom, bad_n * 3, p)
+ assert_raises(ValueError, binom, n * 3, bad_p_one)
+ assert_raises(ValueError, binom, n * 3, bad_p_two)
+
+ self.set_seed()
+ actual = binom(n, p * 3)
+ assert_array_equal(actual, desired)
+ assert_raises(ValueError, binom, bad_n, p * 3)
+ assert_raises(ValueError, binom, n, bad_p_one * 3)
+ assert_raises(ValueError, binom, n, bad_p_two * 3)
+
+ def test_negative_binomial(self):
+ n = [1]
+ p = [0.5]
+ bad_n = [-1]
+ bad_p_one = [-1]
+ bad_p_two = [1.5]
+ neg_binom = random.negative_binomial
+ desired = np.array([3, 1, 2], dtype=np.int64)
+
+ self.set_seed()
+ actual = neg_binom(n * 3, p)
+ assert_array_equal(actual, desired)
+ assert_raises(ValueError, neg_binom, bad_n * 3, p)
+ assert_raises(ValueError, neg_binom, n * 3, bad_p_one)
+ assert_raises(ValueError, neg_binom, n * 3, bad_p_two)
+
+ self.set_seed()
+ actual = neg_binom(n, p * 3)
+ assert_array_equal(actual, desired)
+ assert_raises(ValueError, neg_binom, bad_n, p * 3)
+ assert_raises(ValueError, neg_binom, n, bad_p_one * 3)
+ assert_raises(ValueError, neg_binom, n, bad_p_two * 3)
+
+ def test_poisson(self):
+ max_lam = random._poisson_lam_max
+
+ lam = [1]
+ bad_lam_one = [-1]
+ bad_lam_two = [max_lam * 2]
+ poisson = random.poisson
+ desired = np.array([1, 1, 0])
+
+ self.set_seed()
+ actual = poisson(lam * 3)
+ assert_array_equal(actual, desired)
+ assert_raises(ValueError, poisson, bad_lam_one * 3)
+ assert_raises(ValueError, poisson, bad_lam_two * 3)
+
+ def test_zipf(self):
+ a = [2]
+ bad_a = [0]
+ zipf = random.zipf
+ desired = np.array([2, 2, 1])
+
+ self.set_seed()
+ actual = zipf(a * 3)
+ assert_array_equal(actual, desired)
+ assert_raises(ValueError, zipf, bad_a * 3)
+ with np.errstate(invalid='ignore'):
+ assert_raises(ValueError, zipf, np.nan)
+ assert_raises(ValueError, zipf, [0, 0, np.nan])
+
+ def test_geometric(self):
+ p = [0.5]
+ bad_p_one = [-1]
+ bad_p_two = [1.5]
+ geom = random.geometric
+ desired = np.array([2, 2, 2])
+
+ self.set_seed()
+ actual = geom(p * 3)
+ assert_array_equal(actual, desired)
+ assert_raises(ValueError, geom, bad_p_one * 3)
+ assert_raises(ValueError, geom, bad_p_two * 3)
+
+ def test_hypergeometric(self):
+ ngood = [1]
+ nbad = [2]
+ nsample = [2]
+ bad_ngood = [-1]
+ bad_nbad = [-2]
+ bad_nsample_one = [-1]
+ bad_nsample_two = [4]
+ hypergeom = random.hypergeometric
+ desired = np.array([1, 1, 1])
+
+ self.set_seed()
+ actual = hypergeom(ngood * 3, nbad, nsample)
+ assert_array_equal(actual, desired)
+ assert_raises(ValueError, hypergeom, bad_ngood * 3, nbad, nsample)
+ assert_raises(ValueError, hypergeom, ngood * 3, bad_nbad, nsample)
+ assert_raises(ValueError, hypergeom, ngood * 3, nbad, bad_nsample_one)
+ assert_raises(ValueError, hypergeom, ngood * 3, nbad, bad_nsample_two)
+
+ self.set_seed()
+ actual = hypergeom(ngood, nbad * 3, nsample)
+ assert_array_equal(actual, desired)
+ assert_raises(ValueError, hypergeom, bad_ngood, nbad * 3, nsample)
+ assert_raises(ValueError, hypergeom, ngood, bad_nbad * 3, nsample)
+ assert_raises(ValueError, hypergeom, ngood, nbad * 3, bad_nsample_one)
+ assert_raises(ValueError, hypergeom, ngood, nbad * 3, bad_nsample_two)
+
+ self.set_seed()
+ actual = hypergeom(ngood, nbad, nsample * 3)
+ assert_array_equal(actual, desired)
+ assert_raises(ValueError, hypergeom, bad_ngood, nbad, nsample * 3)
+ assert_raises(ValueError, hypergeom, ngood, bad_nbad, nsample * 3)
+ assert_raises(ValueError, hypergeom, ngood, nbad, bad_nsample_one * 3)
+ assert_raises(ValueError, hypergeom, ngood, nbad, bad_nsample_two * 3)
+
+ assert_raises(ValueError, hypergeom, -1, 10, 20)
+ assert_raises(ValueError, hypergeom, 10, -1, 20)
+ assert_raises(ValueError, hypergeom, 10, 10, -1)
+ assert_raises(ValueError, hypergeom, 10, 10, 25)
+
+ def test_logseries(self):
+ p = [0.5]
+ bad_p_one = [2]
+ bad_p_two = [-1]
+ logseries = random.logseries
+ desired = np.array([1, 1, 1])
+
+ self.set_seed()
+ actual = logseries(p * 3)
+ assert_array_equal(actual, desired)
+ assert_raises(ValueError, logseries, bad_p_one * 3)
+ assert_raises(ValueError, logseries, bad_p_two * 3)
+
+ def test_multinomial(self):
+ random.bit_generator.seed(self.seed)
+ actual = random.multinomial([5, 20], [1 / 6.] * 6, size=(3, 2))
+ desired = np.array([[[1, 1, 1, 1, 0, 1],
+ [4, 5, 1, 4, 3, 3]],
+ [[1, 1, 1, 0, 0, 2],
+ [2, 0, 4, 3, 7, 4]],
+ [[1, 2, 0, 0, 2, 0],
+ [3, 2, 3, 4, 2, 6]]], dtype=np.int64)
+ assert_array_equal(actual, desired)
+
+ random.bit_generator.seed(self.seed)
+ actual = random.multinomial([5, 20], [1 / 6.] * 6)
+ desired = np.array([[1, 1, 1, 1, 0, 1],
+ [4, 5, 1, 4, 3, 3]], dtype=np.int64)
+ assert_array_equal(actual, desired)
+
+
+class TestThread(object):
+ # make sure each state produces the same sequence even in threads
+ def setup(self):
+ self.seeds = range(4)
+
+ def check_function(self, function, sz):
+ from threading import Thread
+
+ out1 = np.empty((len(self.seeds),) + sz)
+ out2 = np.empty((len(self.seeds),) + sz)
+
+ # threaded generation
+ t = [Thread(target=function, args=(Generator(MT19937(s)), o))
+ for s, o in zip(self.seeds, out1)]
+ [x.start() for x in t]
+ [x.join() for x in t]
+
+ # the same serial
+ for s, o in zip(self.seeds, out2):
+ function(Generator(MT19937(s)), o)
+
+ # these platforms change x87 fpu precision mode in threads
+ if np.intp().dtype.itemsize == 4 and sys.platform == "win32":
+ assert_array_almost_equal(out1, out2)
+ else:
+ assert_array_equal(out1, out2)
+
+ def test_normal(self):
+ def gen_random(state, out):
+ out[...] = state.normal(size=10000)
+
+ self.check_function(gen_random, sz=(10000,))
+
+ def test_exp(self):
+ def gen_random(state, out):
+ out[...] = state.exponential(scale=np.ones((100, 1000)))
+
+ self.check_function(gen_random, sz=(100, 1000))
+
+ def test_multinomial(self):
+ def gen_random(state, out):
+ out[...] = state.multinomial(10, [1 / 6.] * 6, size=10000)
+
+ self.check_function(gen_random, sz=(10000, 6))
+
+
+# See Issue #4263
+class TestSingleEltArrayInput(object):
+ def setup(self):
+ self.argOne = np.array([2])
+ self.argTwo = np.array([3])
+ self.argThree = np.array([4])
+ self.tgtShape = (1,)
+
+ def test_one_arg_funcs(self):
+ funcs = (random.exponential, random.standard_gamma,
+ random.chisquare, random.standard_t,
+ random.pareto, random.weibull,
+ random.power, random.rayleigh,
+ random.poisson, random.zipf,
+ random.geometric, random.logseries)
+
+ probfuncs = (random.geometric, random.logseries)
+
+ for func in funcs:
+ if func in probfuncs: # p < 1.0
+ out = func(np.array([0.5]))
+
+ else:
+ out = func(self.argOne)
+
+ assert_equal(out.shape, self.tgtShape)
+
+ def test_two_arg_funcs(self):
+ funcs = (random.uniform, random.normal,
+ random.beta, random.gamma,
+ random.f, random.noncentral_chisquare,
+ random.vonmises, random.laplace,
+ random.gumbel, random.logistic,
+ random.lognormal, random.wald,
+ random.binomial, random.negative_binomial)
+
+ probfuncs = (random.binomial, random.negative_binomial)
+
+ for func in funcs:
+ if func in probfuncs: # p <= 1
+ argTwo = np.array([0.5])
+
+ else:
+ argTwo = self.argTwo
+
+ out = func(self.argOne, argTwo)
+ assert_equal(out.shape, self.tgtShape)
+
+ out = func(self.argOne[0], argTwo)
+ assert_equal(out.shape, self.tgtShape)
+
+ out = func(self.argOne, argTwo[0])
+ assert_equal(out.shape, self.tgtShape)
+
+ def test_integers(self, endpoint):
+ itype = [np.bool, np.int8, np.uint8, np.int16, np.uint16,
+ np.int32, np.uint32, np.int64, np.uint64]
+ func = random.integers
+ high = np.array([1])
+ low = np.array([0])
+
+ for dt in itype:
+ out = func(low, high, endpoint=endpoint, dtype=dt)
+ assert_equal(out.shape, self.tgtShape)
+
+ out = func(low[0], high, endpoint=endpoint, dtype=dt)
+ assert_equal(out.shape, self.tgtShape)
+
+ out = func(low, high[0], endpoint=endpoint, dtype=dt)
+ assert_equal(out.shape, self.tgtShape)
+
+ def test_three_arg_funcs(self):
+ funcs = [random.noncentral_f, random.triangular,
+ random.hypergeometric]
+
+ for func in funcs:
+ out = func(self.argOne, self.argTwo, self.argThree)
+ assert_equal(out.shape, self.tgtShape)
+
+ out = func(self.argOne[0], self.argTwo, self.argThree)
+ assert_equal(out.shape, self.tgtShape)
+
+ out = func(self.argOne, self.argTwo[0], self.argThree)
+ assert_equal(out.shape, self.tgtShape)
diff --git a/numpy/random/tests/test_generator_mt19937_regressions.py b/numpy/random/tests/test_generator_mt19937_regressions.py
new file mode 100644
index 000000000..cd4e08d6f
--- /dev/null
+++ b/numpy/random/tests/test_generator_mt19937_regressions.py
@@ -0,0 +1,166 @@
+import sys
+from numpy.testing import (assert_, assert_array_equal)
+from numpy.compat import long
+import numpy as np
+import pytest
+from numpy.random import Generator, MT19937
+
+mt19937 = Generator(MT19937())
+
+
+class TestRegression(object):
+
+ def test_VonMises_range(self):
+ # Make sure generated random variables are in [-pi, pi].
+ # Regression test for ticket #986.
+ for mu in np.linspace(-7., 7., 5):
+ r = mt19937.vonmises(mu, 1, 50)
+ assert_(np.all(r > -np.pi) and np.all(r <= np.pi))
+
+ def test_hypergeometric_range(self):
+ # Test for ticket #921
+ assert_(np.all(mt19937.hypergeometric(3, 18, 11, size=10) < 4))
+ assert_(np.all(mt19937.hypergeometric(18, 3, 11, size=10) > 0))
+
+ # Test for ticket #5623
+ args = [
+ (2**20 - 2, 2**20 - 2, 2**20 - 2), # Check for 32-bit systems
+ ]
+ is_64bits = sys.maxsize > 2**32
+ if is_64bits and sys.platform != 'win32':
+ # Check for 64-bit systems
+ args.append((2**40 - 2, 2**40 - 2, 2**40 - 2))
+ for arg in args:
+ assert_(mt19937.hypergeometric(*arg) > 0)
+
+ def test_logseries_convergence(self):
+ # Test for ticket #923
+ N = 1000
+ mt19937.bit_generator.seed(0)
+ rvsn = mt19937.logseries(0.8, size=N)
+ # these two frequency counts should be close to theoretical
+ # numbers with this large sample
+ # theoretical large N result is 0.49706795
+ freq = np.sum(rvsn == 1) / float(N)
+ msg = "Frequency was %f, should be > 0.45" % freq
+ assert_(freq > 0.45, msg)
+ # theoretical large N result is 0.19882718
+ freq = np.sum(rvsn == 2) / float(N)
+ msg = "Frequency was %f, should be < 0.23" % freq
+ assert_(freq < 0.23, msg)
+
+ def test_permutation_longs(self):
+ mt19937.bit_generator.seed(1234)
+ a = mt19937.permutation(12)
+ mt19937.bit_generator.seed(1234)
+ b = mt19937.permutation(long(12))
+ assert_array_equal(a, b)
+
+ def test_shuffle_mixed_dimension(self):
+ # Test for trac ticket #2074
+ for t in [[1, 2, 3, None],
+ [(1, 1), (2, 2), (3, 3), None],
+ [1, (2, 2), (3, 3), None],
+ [(1, 1), 2, 3, None]]:
+ mt19937.bit_generator.seed(12345)
+ shuffled = list(t)
+ mt19937.shuffle(shuffled)
+ assert_array_equal(shuffled, [t[0], t[3], t[1], t[2]])
+
+ def test_call_within_randomstate(self):
+ # Check that custom RandomState does not call into global state
+ m = Generator(MT19937()) # mt19937.RandomState()
+ res = np.array([0, 8, 7, 2, 1, 9, 4, 7, 0, 3])
+ for i in range(3):
+ mt19937.bit_generator.seed(i)
+ m.bit_generator.seed(4321)
+ # If m.state is not honored, the result will change
+ assert_array_equal(m.choice(10, size=10, p=np.ones(10)/10.), res)
+
+ def test_multivariate_normal_size_types(self):
+ # Test for multivariate_normal issue with 'size' argument.
+ # Check that the multivariate_normal size argument can be a
+ # numpy integer.
+ mt19937.multivariate_normal([0], [[0]], size=1)
+ mt19937.multivariate_normal([0], [[0]], size=np.int_(1))
+ mt19937.multivariate_normal([0], [[0]], size=np.int64(1))
+
+ def test_beta_small_parameters(self):
+ # Test that beta with small a and b parameters does not produce
+ # NaNs due to roundoff errors causing 0 / 0, gh-5851
+ mt19937.bit_generator.seed(1234567890)
+ x = mt19937.beta(0.0001, 0.0001, size=100)
+ assert_(not np.any(np.isnan(x)), 'Nans in mt19937.beta')
+
+ def test_choice_sum_of_probs_tolerance(self):
+ # The sum of probs should be 1.0 with some tolerance.
+ # For low precision dtypes the tolerance was too tight.
+ # See numpy github issue 6123.
+ mt19937.bit_generator.seed(1234)
+ a = [1, 2, 3]
+ counts = [4, 4, 2]
+ for dt in np.float16, np.float32, np.float64:
+ probs = np.array(counts, dtype=dt) / sum(counts)
+ c = mt19937.choice(a, p=probs)
+ assert_(c in a)
+ with pytest.raises(ValueError):
+ mt19937.choice(a, p=probs*0.9)
+
+ def test_shuffle_of_array_of_different_length_strings(self):
+ # Test that permuting an array of different length strings
+ # will not cause a segfault on garbage collection
+ # Tests gh-7710
+ mt19937.bit_generator.seed(1234)
+
+ a = np.array(['a', 'a' * 1000])
+
+ for _ in range(100):
+ mt19937.shuffle(a)
+
+ # Force Garbage Collection - should not segfault.
+ import gc
+ gc.collect()
+
+ def test_shuffle_of_array_of_objects(self):
+ # Test that permuting an array of objects will not cause
+ # a segfault on garbage collection.
+ # See gh-7719
+ mt19937.bit_generator.seed(1234)
+ a = np.array([np.arange(1), np.arange(4)])
+
+ for _ in range(1000):
+ mt19937.shuffle(a)
+
+ # Force Garbage Collection - should not segfault.
+ import gc
+ gc.collect()
+
+ def test_permutation_subclass(self):
+ class N(np.ndarray):
+ pass
+
+ mt19937.bit_generator.seed(1)
+ orig = np.arange(3).view(N)
+ perm = mt19937.permutation(orig)
+ assert_array_equal(perm, np.array([0, 2, 1]))
+ assert_array_equal(orig, np.arange(3).view(N))
+
+ class M(object):
+ a = np.arange(5)
+
+ def __array__(self):
+ return self.a
+
+ mt19937.bit_generator.seed(1)
+ m = M()
+ perm = mt19937.permutation(m)
+ assert_array_equal(perm, np.array([2, 1, 4, 0, 3]))
+ assert_array_equal(m.__array__(), np.arange(5))
+
+ def test_gamma_0(self):
+ assert mt19937.standard_gamma(0.0) == 0.0
+ assert_array_equal(mt19937.standard_gamma([0.0]), 0.0)
+
+ actual = mt19937.standard_gamma([0.0], dtype='float')
+ expected = np.array([0.], dtype=np.float32)
+ assert_array_equal(actual, expected)
diff --git a/numpy/random/tests/test_random.py b/numpy/random/tests/test_random.py
index a67901a0a..37bd121f3 100644
--- a/numpy/random/tests/test_random.py
+++ b/numpy/random/tests/test_random.py
@@ -43,7 +43,8 @@ class TestSeed(object):
def test_invalid_array_shape(self):
# gh-9832
- assert_raises(ValueError, np.random.RandomState, np.array([], dtype=np.int64))
+ assert_raises(ValueError, np.random.RandomState,
+ np.array([], dtype=np.int64))
assert_raises(ValueError, np.random.RandomState, [[1, 2, 3]])
assert_raises(ValueError, np.random.RandomState, [[1, 2, 3],
[4, 5, 6]])
@@ -349,9 +350,9 @@ class TestRandomDist(object):
np.random.random_integers,
np.iinfo('l').max, np.iinfo('l').max)
- def test_random_sample(self):
+ def test_random(self):
np.random.seed(self.seed)
- actual = np.random.random_sample((3, 2))
+ actual = np.random.random((3, 2))
desired = np.array([[0.61879477158567997, 0.59162362775974664],
[0.88868358904449662, 0.89165480011560816],
[0.4575674820298663, 0.7781880808593471]])
@@ -449,7 +450,8 @@ class TestRandomDist(object):
assert_equal(np.random.randint(10, 10, size=0).shape, (0,))
assert_equal(np.random.choice(0, size=0).shape, (0,))
assert_equal(np.random.choice([], size=(0,)).shape, (0,))
- assert_equal(np.random.choice(['a', 'b'], size=(3, 0, 4)).shape, (3, 0, 4))
+ assert_equal(np.random.choice(['a', 'b'], size=(3, 0, 4)).shape,
+ (3, 0, 4))
assert_raises(ValueError, np.random.choice, [], 10)
def test_choice_nan_probabilities(self):
@@ -692,7 +694,7 @@ class TestRandomDist(object):
cov = [[1, 0], [0, 1]]
size = (3, 2)
actual = np.random.multivariate_normal(mean, cov, size)
- desired = np.array([[[1.463620246718631, 11.73759122771936 ],
+ desired = np.array([[[1.463620246718631, 11.73759122771936],
[1.622445133300628, 9.771356667546383]],
[[2.154490787682787, 12.170324946056553],
[1.719909438201865, 9.230548443648306]],
@@ -720,7 +722,7 @@ class TestRandomDist(object):
assert_raises(ValueError, np.random.multivariate_normal, mean, cov,
check_valid='raise')
- cov = np.array([[1, 0.1],[0.1, 1]], dtype=np.float32)
+ cov = np.array([[1, 0.1], [0.1, 1]], dtype=np.float32)
with suppress_warnings() as sup:
np.random.multivariate_normal(mean, cov)
w = sup.record(RuntimeWarning)
@@ -916,7 +918,8 @@ class TestRandomDist(object):
raise TypeError
throwing_float = np.array(1.0).view(ThrowingFloat)
- assert_raises(TypeError, np.random.uniform, throwing_float, throwing_float)
+ assert_raises(TypeError, np.random.uniform, throwing_float,
+ throwing_float)
class ThrowingInteger(np.ndarray):
def __int__(self):
@@ -1385,21 +1388,24 @@ class TestBroadcast(object):
assert_array_almost_equal(actual, desired, decimal=14)
assert_raises(ValueError, triangular, bad_left_one * 3, mode, right)
assert_raises(ValueError, triangular, left * 3, bad_mode_one, right)
- assert_raises(ValueError, triangular, bad_left_two * 3, bad_mode_two, right)
+ assert_raises(ValueError, triangular, bad_left_two * 3, bad_mode_two,
+ right)
self.setSeed()
actual = triangular(left, mode * 3, right)
assert_array_almost_equal(actual, desired, decimal=14)
assert_raises(ValueError, triangular, bad_left_one, mode * 3, right)
assert_raises(ValueError, triangular, left, bad_mode_one * 3, right)
- assert_raises(ValueError, triangular, bad_left_two, bad_mode_two * 3, right)
+ assert_raises(ValueError, triangular, bad_left_two, bad_mode_two * 3,
+ right)
self.setSeed()
actual = triangular(left, mode, right * 3)
assert_array_almost_equal(actual, desired, decimal=14)
assert_raises(ValueError, triangular, bad_left_one, mode, right * 3)
assert_raises(ValueError, triangular, left, bad_mode_one, right * 3)
- assert_raises(ValueError, triangular, bad_left_two, bad_mode_two, right * 3)
+ assert_raises(ValueError, triangular, bad_left_two, bad_mode_two,
+ right * 3)
def test_binomial(self):
n = [1]
@@ -1448,7 +1454,7 @@ class TestBroadcast(object):
assert_raises(ValueError, neg_binom, n, bad_p_two * 3)
def test_poisson(self):
- max_lam = np.random.RandomState().poisson_lam_max
+ max_lam = np.random.RandomState()._poisson_lam_max
lam = [1]
bad_lam_one = [-1]
@@ -1537,6 +1543,7 @@ class TestBroadcast(object):
assert_raises(ValueError, logseries, bad_p_one * 3)
assert_raises(ValueError, logseries, bad_p_two * 3)
+
class TestThread(object):
# make sure each state produces the same sequence even in threads
def setup(self):
@@ -1579,6 +1586,7 @@ class TestThread(object):
out[...] = state.multinomial(10, [1/6.]*6, size=10000)
self.check_function(gen_random, sz=(10000, 6))
+
# See Issue #4263
class TestSingleEltArrayInput(object):
def setup(self):
diff --git a/numpy/random/tests/test_randomstate.py b/numpy/random/tests/test_randomstate.py
new file mode 100644
index 000000000..5e2b93f52
--- /dev/null
+++ b/numpy/random/tests/test_randomstate.py
@@ -0,0 +1,1923 @@
+import hashlib
+import pickle
+import sys
+import warnings
+
+import numpy as np
+import pytest
+from numpy.testing import (
+ assert_, assert_raises, assert_equal, assert_warns,
+ assert_no_warnings, assert_array_equal, assert_array_almost_equal,
+ suppress_warnings
+ )
+
+from numpy.random import MT19937, Xoshiro256, mtrand as random
+
+INT_FUNCS = {'binomial': (100.0, 0.6),
+ 'geometric': (.5,),
+ 'hypergeometric': (20, 20, 10),
+ 'logseries': (.5,),
+ 'multinomial': (20, np.ones(6) / 6.0),
+ 'negative_binomial': (100, .5),
+ 'poisson': (10.0,),
+ 'zipf': (2,),
+ }
+
+if np.iinfo(int).max < 2**32:
+ # Windows and some 32-bit platforms, e.g., ARM
+ INT_FUNC_HASHES = {'binomial': '670e1c04223ffdbab27e08fbbad7bdba',
+ 'logseries': '6bd0183d2f8030c61b0d6e11aaa60caf',
+ 'geometric': '6e9df886f3e1e15a643168568d5280c0',
+ 'hypergeometric': '7964aa611b046aecd33063b90f4dec06',
+ 'multinomial': '68a0b049c16411ed0aa4aff3572431e4',
+ 'negative_binomial': 'dc265219eec62b4338d39f849cd36d09',
+ 'poisson': '7b4dce8e43552fc82701c2fa8e94dc6e',
+ 'zipf': 'fcd2a2095f34578723ac45e43aca48c5',
+ }
+else:
+ INT_FUNC_HASHES = {'binomial': 'b5f8dcd74f172836536deb3547257b14',
+ 'geometric': '8814571f45c87c59699d62ccd3d6c350',
+ 'hypergeometric': 'bc64ae5976eac452115a16dad2dcf642',
+ 'logseries': '84be924b37485a27c4a98797bc88a7a4',
+ 'multinomial': 'ec3c7f9cf9664044bb0c6fb106934200',
+ 'negative_binomial': '210533b2234943591364d0117a552969',
+ 'poisson': '0536a8850c79da0c78defd742dccc3e0',
+ 'zipf': 'f2841f504dd2525cd67cdcad7561e532',
+ }
+
+
+@pytest.fixture(scope='module', params=INT_FUNCS)
+def int_func(request):
+ return (request.param, INT_FUNCS[request.param],
+ INT_FUNC_HASHES[request.param])
+
+
+def assert_mt19937_state_equal(a, b):
+ assert_equal(a['bit_generator'], b['bit_generator'])
+ assert_array_equal(a['state']['key'], b['state']['key'])
+ assert_array_equal(a['state']['pos'], b['state']['pos'])
+ assert_equal(a['has_gauss'], b['has_gauss'])
+ assert_equal(a['gauss'], b['gauss'])
+
+
+class TestSeed(object):
+ def test_scalar(self):
+ s = random.RandomState(0)
+ assert_equal(s.randint(1000), 684)
+ s = random.RandomState(4294967295)
+ assert_equal(s.randint(1000), 419)
+
+ def test_array(self):
+ s = random.RandomState(range(10))
+ assert_equal(s.randint(1000), 468)
+ s = random.RandomState(np.arange(10))
+ assert_equal(s.randint(1000), 468)
+ s = random.RandomState([0])
+ assert_equal(s.randint(1000), 973)
+ s = random.RandomState([4294967295])
+ assert_equal(s.randint(1000), 265)
+
+ def test_invalid_scalar(self):
+ # seed must be an unsigned 32 bit integer
+ assert_raises(TypeError, random.RandomState, -0.5)
+ assert_raises(ValueError, random.RandomState, -1)
+
+ def test_invalid_array(self):
+ # seed must be an unsigned 32 bit integer
+ assert_raises(TypeError, random.RandomState, [-0.5])
+ assert_raises(ValueError, random.RandomState, [-1])
+ assert_raises(ValueError, random.RandomState, [4294967296])
+ assert_raises(ValueError, random.RandomState, [1, 2, 4294967296])
+ assert_raises(ValueError, random.RandomState, [1, -2, 4294967296])
+
+ def test_invalid_array_shape(self):
+ # gh-9832
+ assert_raises(ValueError, random.RandomState, np.array([],
+ dtype=np.int64))
+ assert_raises(ValueError, random.RandomState, [[1, 2, 3]])
+ assert_raises(ValueError, random.RandomState, [[1, 2, 3],
+ [4, 5, 6]])
+
+ def test_seed_equivalency(self):
+ rs = random.RandomState(0)
+ rs2 = random.RandomState(MT19937(0))
+ assert_mt19937_state_equal(rs.get_state(legacy=False),
+ rs2.get_state(legacy=False))
+
+ def test_invalid_initialization(self):
+ assert_raises(ValueError, random.RandomState, MT19937)
+
+
+class TestBinomial(object):
+ def test_n_zero(self):
+ # Tests the corner case of n == 0 for the binomial distribution.
+ # binomial(0, p) should be zero for any p in [0, 1].
+ # This test addresses issue #3480.
+ zeros = np.zeros(2, dtype='int')
+ for p in [0, .5, 1]:
+ assert_(random.binomial(0, p) == 0)
+ assert_array_equal(random.binomial(zeros, p), zeros)
+
+ def test_p_is_nan(self):
+ # Issue #4571.
+ assert_raises(ValueError, random.binomial, 1, np.nan)
+
+
+class TestMultinomial(object):
+ def test_basic(self):
+ random.multinomial(100, [0.2, 0.8])
+
+ def test_zero_probability(self):
+ random.multinomial(100, [0.2, 0.8, 0.0, 0.0, 0.0])
+
+ def test_int_negative_interval(self):
+ assert_(-5 <= random.randint(-5, -1) < -1)
+ x = random.randint(-5, -1, 5)
+ assert_(np.all(-5 <= x))
+ assert_(np.all(x < -1))
+
+ def test_size(self):
+ # gh-3173
+ p = [0.5, 0.5]
+ assert_equal(random.multinomial(1, p, np.uint32(1)).shape, (1, 2))
+ assert_equal(random.multinomial(1, p, np.uint32(1)).shape, (1, 2))
+ assert_equal(random.multinomial(1, p, np.uint32(1)).shape, (1, 2))
+ assert_equal(random.multinomial(1, p, [2, 2]).shape, (2, 2, 2))
+ assert_equal(random.multinomial(1, p, (2, 2)).shape, (2, 2, 2))
+ assert_equal(random.multinomial(1, p, np.array((2, 2))).shape,
+ (2, 2, 2))
+
+ assert_raises(TypeError, random.multinomial, 1, p,
+ float(1))
+
+ def test_invalid_prob(self):
+ assert_raises(ValueError, random.multinomial, 100, [1.1, 0.2])
+ assert_raises(ValueError, random.multinomial, 100, [-.1, 0.9])
+
+ def test_invalid_n(self):
+ assert_raises(ValueError, random.multinomial, -1, [0.8, 0.2])
+
+
+class TestSetState(object):
+ def setup(self):
+ self.seed = 1234567890
+ self.random_state = random.RandomState(self.seed)
+ self.state = self.random_state.get_state()
+
+ def test_basic(self):
+ old = self.random_state.tomaxint(16)
+ self.random_state.set_state(self.state)
+ new = self.random_state.tomaxint(16)
+ assert_(np.all(old == new))
+
+ def test_gaussian_reset(self):
+ # Make sure the cached every-other-Gaussian is reset.
+ old = self.random_state.standard_normal(size=3)
+ self.random_state.set_state(self.state)
+ new = self.random_state.standard_normal(size=3)
+ assert_(np.all(old == new))
+
+ def test_gaussian_reset_in_media_res(self):
+ # When the state is saved with a cached Gaussian, make sure the
+ # cached Gaussian is restored.
+
+ self.random_state.standard_normal()
+ state = self.random_state.get_state()
+ old = self.random_state.standard_normal(size=3)
+ self.random_state.set_state(state)
+ new = self.random_state.standard_normal(size=3)
+ assert_(np.all(old == new))
+
+ def test_backwards_compatibility(self):
+ # Make sure we can accept old state tuples that do not have the
+ # cached Gaussian value.
+ old_state = self.state[:-2]
+ x1 = self.random_state.standard_normal(size=16)
+ self.random_state.set_state(old_state)
+ x2 = self.random_state.standard_normal(size=16)
+ self.random_state.set_state(self.state)
+ x3 = self.random_state.standard_normal(size=16)
+ assert_(np.all(x1 == x2))
+ assert_(np.all(x1 == x3))
+
+ def test_negative_binomial(self):
+ # Ensure that the negative binomial results take floating point
+ # arguments without truncation.
+ self.random_state.negative_binomial(0.5, 0.5)
+
+ def test_get_state_warning(self):
+ rs = random.RandomState(Xoshiro256())
+ with suppress_warnings() as sup:
+ w = sup.record(RuntimeWarning)
+ state = rs.get_state()
+ assert_(len(w) == 1)
+ assert isinstance(state, dict)
+ assert state['bit_generator'] == 'Xoshiro256'
+
+ def test_invalid_legacy_state_setting(self):
+ state = self.random_state.get_state()
+ new_state = ('Unknown', ) + state[1:]
+ assert_raises(ValueError, self.random_state.set_state, new_state)
+ assert_raises(TypeError, self.random_state.set_state,
+ np.array(new_state, dtype=np.object))
+ state = self.random_state.get_state(legacy=False)
+ del state['bit_generator']
+ assert_raises(ValueError, self.random_state.set_state, state)
+
+ def test_pickle(self):
+ self.random_state.seed(0)
+ self.random_state.random_sample(100)
+ self.random_state.standard_normal()
+ pickled = self.random_state.get_state(legacy=False)
+ assert_equal(pickled['has_gauss'], 1)
+ rs_unpick = pickle.loads(pickle.dumps(self.random_state))
+ unpickled = rs_unpick.get_state(legacy=False)
+ assert_mt19937_state_equal(pickled, unpickled)
+
+ def test_state_setting(self):
+ attr_state = self.random_state.__getstate__()
+ self.random_state.standard_normal()
+ self.random_state.__setstate__(attr_state)
+ state = self.random_state.get_state(legacy=False)
+ assert_mt19937_state_equal(attr_state, state)
+
+ def test_repr(self):
+ assert repr(self.random_state).startswith('RandomState(MT19937)')
+
+
+class TestRandint(object):
+
+ rfunc = random.randint
+
+ # valid integer/boolean types
+ itype = [np.bool_, np.int8, np.uint8, np.int16, np.uint16,
+ np.int32, np.uint32, np.int64, np.uint64]
+
+ def test_unsupported_type(self):
+ assert_raises(TypeError, self.rfunc, 1, dtype=float)
+
+ def test_bounds_checking(self):
+ for dt in self.itype:
+ lbnd = 0 if dt is np.bool_ else np.iinfo(dt).min
+ ubnd = 2 if dt is np.bool_ else np.iinfo(dt).max + 1
+ assert_raises(ValueError, self.rfunc, lbnd - 1, ubnd, dtype=dt)
+ assert_raises(ValueError, self.rfunc, lbnd, ubnd + 1, dtype=dt)
+ assert_raises(ValueError, self.rfunc, ubnd, lbnd, dtype=dt)
+ assert_raises(ValueError, self.rfunc, 1, 0, dtype=dt)
+
+ def test_rng_zero_and_extremes(self):
+ for dt in self.itype:
+ lbnd = 0 if dt is np.bool_ else np.iinfo(dt).min
+ ubnd = 2 if dt is np.bool_ else np.iinfo(dt).max + 1
+
+ tgt = ubnd - 1
+ assert_equal(self.rfunc(tgt, tgt + 1, size=1000, dtype=dt), tgt)
+
+ tgt = lbnd
+ assert_equal(self.rfunc(tgt, tgt + 1, size=1000, dtype=dt), tgt)
+
+ tgt = (lbnd + ubnd)//2
+ assert_equal(self.rfunc(tgt, tgt + 1, size=1000, dtype=dt), tgt)
+
+ def test_full_range(self):
+ # Test for ticket #1690
+
+ for dt in self.itype:
+ lbnd = 0 if dt is np.bool_ else np.iinfo(dt).min
+ ubnd = 2 if dt is np.bool_ else np.iinfo(dt).max + 1
+
+ try:
+ self.rfunc(lbnd, ubnd, dtype=dt)
+ except Exception as e:
+ raise AssertionError("No error should have been raised, "
+ "but one was with the following "
+ "message:\n\n%s" % str(e))
+
+ def test_in_bounds_fuzz(self):
+ # Don't use fixed seed
+ random.seed()
+
+ for dt in self.itype[1:]:
+ for ubnd in [4, 8, 16]:
+ vals = self.rfunc(2, ubnd, size=2**16, dtype=dt)
+ assert_(vals.max() < ubnd)
+ assert_(vals.min() >= 2)
+
+ vals = self.rfunc(0, 2, size=2**16, dtype=np.bool_)
+
+ assert_(vals.max() < 2)
+ assert_(vals.min() >= 0)
+
+ def test_repeatability(self):
+ # We use a md5 hash of generated sequences of 1000 samples
+ # in the range [0, 6) for all but bool, where the range
+ # is [0, 2). Hashes are for little endian numbers.
+ tgt = {'bool': '7dd3170d7aa461d201a65f8bcf3944b0',
+ 'int16': '1b7741b80964bb190c50d541dca1cac1',
+ 'int32': '4dc9fcc2b395577ebb51793e58ed1a05',
+ 'int64': '17db902806f448331b5a758d7d2ee672',
+ 'int8': '27dd30c4e08a797063dffac2490b0be6',
+ 'uint16': '1b7741b80964bb190c50d541dca1cac1',
+ 'uint32': '4dc9fcc2b395577ebb51793e58ed1a05',
+ 'uint64': '17db902806f448331b5a758d7d2ee672',
+ 'uint8': '27dd30c4e08a797063dffac2490b0be6'}
+
+ for dt in self.itype[1:]:
+ random.seed(1234)
+
+ # view as little endian for hash
+ if sys.byteorder == 'little':
+ val = self.rfunc(0, 6, size=1000, dtype=dt)
+ else:
+ val = self.rfunc(0, 6, size=1000, dtype=dt).byteswap()
+
+ res = hashlib.md5(val.view(np.int8)).hexdigest()
+ assert_(tgt[np.dtype(dt).name] == res)
+
+ # bools do not depend on endianness
+ random.seed(1234)
+ val = self.rfunc(0, 2, size=1000, dtype=bool).view(np.int8)
+ res = hashlib.md5(val).hexdigest()
+ assert_(tgt[np.dtype(bool).name] == res)
+
+ def test_int64_uint64_corner_case(self):
+ # When stored in Numpy arrays, `lbnd` is casted
+ # as np.int64, and `ubnd` is casted as np.uint64.
+ # Checking whether `lbnd` >= `ubnd` used to be
+ # done solely via direct comparison, which is incorrect
+ # because when Numpy tries to compare both numbers,
+ # it casts both to np.float64 because there is
+ # no integer superset of np.int64 and np.uint64. However,
+ # `ubnd` is too large to be represented in np.float64,
+ # causing it be round down to np.iinfo(np.int64).max,
+ # leading to a ValueError because `lbnd` now equals
+ # the new `ubnd`.
+
+ dt = np.int64
+ tgt = np.iinfo(np.int64).max
+ lbnd = np.int64(np.iinfo(np.int64).max)
+ ubnd = np.uint64(np.iinfo(np.int64).max + 1)
+
+ # None of these function calls should
+ # generate a ValueError now.
+ actual = random.randint(lbnd, ubnd, dtype=dt)
+ assert_equal(actual, tgt)
+
+ def test_respect_dtype_singleton(self):
+ # See gh-7203
+ for dt in self.itype:
+ lbnd = 0 if dt is np.bool_ else np.iinfo(dt).min
+ ubnd = 2 if dt is np.bool_ else np.iinfo(dt).max + 1
+
+ sample = self.rfunc(lbnd, ubnd, dtype=dt)
+ assert_equal(sample.dtype, np.dtype(dt))
+
+ for dt in (bool, int, np.long):
+ lbnd = 0 if dt is bool else np.iinfo(dt).min
+ ubnd = 2 if dt is bool else np.iinfo(dt).max + 1
+
+ # gh-7284: Ensure that we get Python data types
+ sample = self.rfunc(lbnd, ubnd, dtype=dt)
+ assert_(not hasattr(sample, 'dtype'))
+ assert_equal(type(sample), dt)
+
+
+class TestRandomDist(object):
+ # Make sure the random distribution returns the correct value for a
+ # given seed
+
+ def setup(self):
+ self.seed = 1234567890
+
+ def test_rand(self):
+ random.seed(self.seed)
+ actual = random.rand(3, 2)
+ desired = np.array([[0.61879477158567997, 0.59162362775974664],
+ [0.88868358904449662, 0.89165480011560816],
+ [0.4575674820298663, 0.7781880808593471]])
+ assert_array_almost_equal(actual, desired, decimal=15)
+
+ def test_rand_singleton(self):
+ random.seed(self.seed)
+ actual = random.rand()
+ desired = 0.61879477158567997
+ assert_array_almost_equal(actual, desired, decimal=15)
+
+ def test_randn(self):
+ random.seed(self.seed)
+ actual = random.randn(3, 2)
+ desired = np.array([[1.34016345771863121, 1.73759122771936081],
+ [1.498988344300628, -0.2286433324536169],
+ [2.031033998682787, 2.17032494605655257]])
+ assert_array_almost_equal(actual, desired, decimal=15)
+
+ random.seed(self.seed)
+ actual = random.randn()
+ assert_array_almost_equal(actual, desired[0, 0], decimal=15)
+
+ def test_randint(self):
+ random.seed(self.seed)
+ actual = random.randint(-99, 99, size=(3, 2))
+ desired = np.array([[31, 3],
+ [-52, 41],
+ [-48, -66]])
+ assert_array_equal(actual, desired)
+
+ def test_random_integers(self):
+ random.seed(self.seed)
+ with suppress_warnings() as sup:
+ w = sup.record(DeprecationWarning)
+ actual = random.random_integers(-99, 99, size=(3, 2))
+ assert_(len(w) == 1)
+ desired = np.array([[31, 3],
+ [-52, 41],
+ [-48, -66]])
+ assert_array_equal(actual, desired)
+
+ random.seed(self.seed)
+ with suppress_warnings() as sup:
+ w = sup.record(DeprecationWarning)
+ actual = random.random_integers(198, size=(3, 2))
+ assert_(len(w) == 1)
+ assert_array_equal(actual, desired + 100)
+
+ def test_tomaxint(self):
+ random.seed(self.seed)
+ rs = random.RandomState(self.seed)
+ actual = rs.tomaxint(size=(3, 2))
+ if np.iinfo(np.int).max == 2147483647:
+ desired = np.array([[1328851649, 731237375],
+ [1270502067, 320041495],
+ [1908433478, 499156889]], dtype=np.int64)
+ else:
+ desired = np.array([[5707374374421908479, 5456764827585442327],
+ [8196659375100692377, 8224063923314595285],
+ [4220315081820346526, 7177518203184491332]],
+ dtype=np.int64)
+
+ assert_equal(actual, desired)
+
+ rs.seed(self.seed)
+ actual = rs.tomaxint()
+ assert_equal(actual, desired[0, 0])
+
+ def test_random_integers_max_int(self):
+ # Tests whether random_integers can generate the
+ # maximum allowed Python int that can be converted
+ # into a C long. Previous implementations of this
+ # method have thrown an OverflowError when attempting
+ # to generate this integer.
+ with suppress_warnings() as sup:
+ w = sup.record(DeprecationWarning)
+ actual = random.random_integers(np.iinfo('l').max,
+ np.iinfo('l').max)
+ assert_(len(w) == 1)
+
+ desired = np.iinfo('l').max
+ assert_equal(actual, desired)
+ with suppress_warnings() as sup:
+ w = sup.record(DeprecationWarning)
+ typer = np.dtype('l').type
+ actual = random.random_integers(typer(np.iinfo('l').max),
+ typer(np.iinfo('l').max))
+ assert_(len(w) == 1)
+ assert_equal(actual, desired)
+
+ def test_random_integers_deprecated(self):
+ with warnings.catch_warnings():
+ warnings.simplefilter("error", DeprecationWarning)
+
+ # DeprecationWarning raised with high == None
+ assert_raises(DeprecationWarning,
+ random.random_integers,
+ np.iinfo('l').max)
+
+ # DeprecationWarning raised with high != None
+ assert_raises(DeprecationWarning,
+ random.random_integers,
+ np.iinfo('l').max, np.iinfo('l').max)
+
+ def test_random_sample(self):
+ random.seed(self.seed)
+ actual = random.random_sample((3, 2))
+ desired = np.array([[0.61879477158567997, 0.59162362775974664],
+ [0.88868358904449662, 0.89165480011560816],
+ [0.4575674820298663, 0.7781880808593471]])
+ assert_array_almost_equal(actual, desired, decimal=15)
+
+ random.seed(self.seed)
+ actual = random.random_sample()
+ assert_array_almost_equal(actual, desired[0, 0], decimal=15)
+
+ def test_choice_uniform_replace(self):
+ random.seed(self.seed)
+ actual = random.choice(4, 4)
+ desired = np.array([2, 3, 2, 3])
+ assert_array_equal(actual, desired)
+
+ def test_choice_nonuniform_replace(self):
+ random.seed(self.seed)
+ actual = random.choice(4, 4, p=[0.4, 0.4, 0.1, 0.1])
+ desired = np.array([1, 1, 2, 2])
+ assert_array_equal(actual, desired)
+
+ def test_choice_uniform_noreplace(self):
+ random.seed(self.seed)
+ actual = random.choice(4, 3, replace=False)
+ desired = np.array([0, 1, 3])
+ assert_array_equal(actual, desired)
+
+ def test_choice_nonuniform_noreplace(self):
+ random.seed(self.seed)
+ actual = random.choice(4, 3, replace=False, p=[0.1, 0.3, 0.5, 0.1])
+ desired = np.array([2, 3, 1])
+ assert_array_equal(actual, desired)
+
+ def test_choice_noninteger(self):
+ random.seed(self.seed)
+ actual = random.choice(['a', 'b', 'c', 'd'], 4)
+ desired = np.array(['c', 'd', 'c', 'd'])
+ assert_array_equal(actual, desired)
+
+ def test_choice_exceptions(self):
+ sample = random.choice
+ assert_raises(ValueError, sample, -1, 3)
+ assert_raises(ValueError, sample, 3., 3)
+ assert_raises(ValueError, sample, [[1, 2], [3, 4]], 3)
+ assert_raises(ValueError, sample, [], 3)
+ assert_raises(ValueError, sample, [1, 2, 3, 4], 3,
+ p=[[0.25, 0.25], [0.25, 0.25]])
+ assert_raises(ValueError, sample, [1, 2], 3, p=[0.4, 0.4, 0.2])
+ assert_raises(ValueError, sample, [1, 2], 3, p=[1.1, -0.1])
+ assert_raises(ValueError, sample, [1, 2], 3, p=[0.4, 0.4])
+ assert_raises(ValueError, sample, [1, 2, 3], 4, replace=False)
+ # gh-13087
+ assert_raises(ValueError, sample, [1, 2, 3], -2, replace=False)
+ assert_raises(ValueError, sample, [1, 2, 3], (-1,), replace=False)
+ assert_raises(ValueError, sample, [1, 2, 3], (-1, 1), replace=False)
+ assert_raises(ValueError, sample, [1, 2, 3], 2,
+ replace=False, p=[1, 0, 0])
+
+ def test_choice_return_shape(self):
+ p = [0.1, 0.9]
+ # Check scalar
+ assert_(np.isscalar(random.choice(2, replace=True)))
+ assert_(np.isscalar(random.choice(2, replace=False)))
+ assert_(np.isscalar(random.choice(2, replace=True, p=p)))
+ assert_(np.isscalar(random.choice(2, replace=False, p=p)))
+ assert_(np.isscalar(random.choice([1, 2], replace=True)))
+ assert_(random.choice([None], replace=True) is None)
+ a = np.array([1, 2])
+ arr = np.empty(1, dtype=object)
+ arr[0] = a
+ assert_(random.choice(arr, replace=True) is a)
+
+ # Check 0-d array
+ s = tuple()
+ assert_(not np.isscalar(random.choice(2, s, replace=True)))
+ assert_(not np.isscalar(random.choice(2, s, replace=False)))
+ assert_(not np.isscalar(random.choice(2, s, replace=True, p=p)))
+ assert_(not np.isscalar(random.choice(2, s, replace=False, p=p)))
+ assert_(not np.isscalar(random.choice([1, 2], s, replace=True)))
+ assert_(random.choice([None], s, replace=True).ndim == 0)
+ a = np.array([1, 2])
+ arr = np.empty(1, dtype=object)
+ arr[0] = a
+ assert_(random.choice(arr, s, replace=True).item() is a)
+
+ # Check multi dimensional array
+ s = (2, 3)
+ p = [0.1, 0.1, 0.1, 0.1, 0.4, 0.2]
+ assert_equal(random.choice(6, s, replace=True).shape, s)
+ assert_equal(random.choice(6, s, replace=False).shape, s)
+ assert_equal(random.choice(6, s, replace=True, p=p).shape, s)
+ assert_equal(random.choice(6, s, replace=False, p=p).shape, s)
+ assert_equal(random.choice(np.arange(6), s, replace=True).shape, s)
+
+ # Check zero-size
+ assert_equal(random.randint(0, 0, size=(3, 0, 4)).shape, (3, 0, 4))
+ assert_equal(random.randint(0, -10, size=0).shape, (0,))
+ assert_equal(random.randint(10, 10, size=0).shape, (0,))
+ assert_equal(random.choice(0, size=0).shape, (0,))
+ assert_equal(random.choice([], size=(0,)).shape, (0,))
+ assert_equal(random.choice(['a', 'b'], size=(3, 0, 4)).shape,
+ (3, 0, 4))
+ assert_raises(ValueError, random.choice, [], 10)
+
+ def test_choice_nan_probabilities(self):
+ a = np.array([42, 1, 2])
+ p = [None, None, None]
+ assert_raises(ValueError, random.choice, a, p=p)
+
+ def test_bytes(self):
+ random.seed(self.seed)
+ actual = random.bytes(10)
+ desired = b'\x82Ui\x9e\xff\x97+Wf\xa5'
+ assert_equal(actual, desired)
+
+ def test_shuffle(self):
+ # Test lists, arrays (of various dtypes), and multidimensional versions
+ # of both, c-contiguous or not:
+ for conv in [lambda x: np.array([]),
+ lambda x: x,
+ lambda x: np.asarray(x).astype(np.int8),
+ lambda x: np.asarray(x).astype(np.float32),
+ lambda x: np.asarray(x).astype(np.complex64),
+ lambda x: np.asarray(x).astype(object),
+ lambda x: [(i, i) for i in x],
+ lambda x: np.asarray([[i, i] for i in x]),
+ lambda x: np.vstack([x, x]).T,
+ # gh-11442
+ lambda x: (np.asarray([(i, i) for i in x],
+ [("a", int), ("b", int)])
+ .view(np.recarray)),
+ # gh-4270
+ lambda x: np.asarray([(i, i) for i in x],
+ [("a", object, (1,)),
+ ("b", np.int32, (1,))])]:
+ random.seed(self.seed)
+ alist = conv([1, 2, 3, 4, 5, 6, 7, 8, 9, 0])
+ random.shuffle(alist)
+ actual = alist
+ desired = conv([0, 1, 9, 6, 2, 4, 5, 8, 7, 3])
+ assert_array_equal(actual, desired)
+
+ def test_shuffle_masked(self):
+ # gh-3263
+ a = np.ma.masked_values(np.reshape(range(20), (5, 4)) % 3 - 1, -1)
+ b = np.ma.masked_values(np.arange(20) % 3 - 1, -1)
+ a_orig = a.copy()
+ b_orig = b.copy()
+ for i in range(50):
+ random.shuffle(a)
+ assert_equal(
+ sorted(a.data[~a.mask]), sorted(a_orig.data[~a_orig.mask]))
+ random.shuffle(b)
+ assert_equal(
+ sorted(b.data[~b.mask]), sorted(b_orig.data[~b_orig.mask]))
+
+ def test_permutation(self):
+ random.seed(self.seed)
+ alist = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
+ actual = random.permutation(alist)
+ desired = [0, 1, 9, 6, 2, 4, 5, 8, 7, 3]
+ assert_array_equal(actual, desired)
+
+ random.seed(self.seed)
+ arr_2d = np.atleast_2d([1, 2, 3, 4, 5, 6, 7, 8, 9, 0]).T
+ actual = random.permutation(arr_2d)
+ assert_array_equal(actual, np.atleast_2d(desired).T)
+
+ def test_beta(self):
+ random.seed(self.seed)
+ actual = random.beta(.1, .9, size=(3, 2))
+ desired = np.array(
+ [[1.45341850513746058e-02, 5.31297615662868145e-04],
+ [1.85366619058432324e-06, 4.19214516800110563e-03],
+ [1.58405155108498093e-04, 1.26252891949397652e-04]])
+ assert_array_almost_equal(actual, desired, decimal=15)
+
+ def test_binomial(self):
+ random.seed(self.seed)
+ actual = random.binomial(100.123, .456, size=(3, 2))
+ desired = np.array([[37, 43],
+ [42, 48],
+ [46, 45]])
+ assert_array_equal(actual, desired)
+
+ random.seed(self.seed)
+ actual = random.binomial(100.123, .456)
+ desired = 37
+ assert_array_equal(actual, desired)
+
+ def test_chisquare(self):
+ random.seed(self.seed)
+ actual = random.chisquare(50, size=(3, 2))
+ desired = np.array([[63.87858175501090585, 68.68407748911370447],
+ [65.77116116901505904, 47.09686762438974483],
+ [72.3828403199695174, 74.18408615260374006]])
+ assert_array_almost_equal(actual, desired, decimal=13)
+
+ def test_dirichlet(self):
+ random.seed(self.seed)
+ alpha = np.array([51.72840233779265162, 39.74494232180943953])
+ actual = random.dirichlet(alpha, size=(3, 2))
+ desired = np.array([[[0.54539444573611562, 0.45460555426388438],
+ [0.62345816822039413, 0.37654183177960598]],
+ [[0.55206000085785778, 0.44793999914214233],
+ [0.58964023305154301, 0.41035976694845688]],
+ [[0.59266909280647828, 0.40733090719352177],
+ [0.56974431743975207, 0.43025568256024799]]])
+ assert_array_almost_equal(actual, desired, decimal=15)
+ bad_alpha = np.array([5.4e-01, -1.0e-16])
+ assert_raises(ValueError, random.dirichlet, bad_alpha)
+
+ random.seed(self.seed)
+ alpha = np.array([51.72840233779265162, 39.74494232180943953])
+ actual = random.dirichlet(alpha)
+ assert_array_almost_equal(actual, desired[0, 0], decimal=15)
+
+ def test_dirichlet_size(self):
+ # gh-3173
+ p = np.array([51.72840233779265162, 39.74494232180943953])
+ assert_equal(random.dirichlet(p, np.uint32(1)).shape, (1, 2))
+ assert_equal(random.dirichlet(p, np.uint32(1)).shape, (1, 2))
+ assert_equal(random.dirichlet(p, np.uint32(1)).shape, (1, 2))
+ assert_equal(random.dirichlet(p, [2, 2]).shape, (2, 2, 2))
+ assert_equal(random.dirichlet(p, (2, 2)).shape, (2, 2, 2))
+ assert_equal(random.dirichlet(p, np.array((2, 2))).shape, (2, 2, 2))
+
+ assert_raises(TypeError, random.dirichlet, p, float(1))
+
+ def test_dirichlet_bad_alpha(self):
+ # gh-2089
+ alpha = np.array([5.4e-01, -1.0e-16])
+ assert_raises(ValueError, random.dirichlet, alpha)
+
+ def test_exponential(self):
+ random.seed(self.seed)
+ actual = random.exponential(1.1234, size=(3, 2))
+ desired = np.array([[1.08342649775011624, 1.00607889924557314],
+ [2.46628830085216721, 2.49668106809923884],
+ [0.68717433461363442, 1.69175666993575979]])
+ assert_array_almost_equal(actual, desired, decimal=15)
+
+ def test_exponential_0(self):
+ assert_equal(random.exponential(scale=0), 0)
+ assert_raises(ValueError, random.exponential, scale=-0.)
+
+ def test_f(self):
+ random.seed(self.seed)
+ actual = random.f(12, 77, size=(3, 2))
+ desired = np.array([[1.21975394418575878, 1.75135759791559775],
+ [1.44803115017146489, 1.22108959480396262],
+ [1.02176975757740629, 1.34431827623300415]])
+ assert_array_almost_equal(actual, desired, decimal=15)
+
+ def test_gamma(self):
+ random.seed(self.seed)
+ actual = random.gamma(5, 3, size=(3, 2))
+ desired = np.array([[24.60509188649287182, 28.54993563207210627],
+ [26.13476110204064184, 12.56988482927716078],
+ [31.71863275789960568, 33.30143302795922011]])
+ assert_array_almost_equal(actual, desired, decimal=14)
+
+ def test_gamma_0(self):
+ assert_equal(random.gamma(shape=0, scale=0), 0)
+ assert_raises(ValueError, random.gamma, shape=-0., scale=-0.)
+
+ def test_geometric(self):
+ random.seed(self.seed)
+ actual = random.geometric(.123456789, size=(3, 2))
+ desired = np.array([[8, 7],
+ [17, 17],
+ [5, 12]])
+ assert_array_equal(actual, desired)
+
+ def test_geometric_exceptions(self):
+ assert_raises(ValueError, random.geometric, 1.1)
+ assert_raises(ValueError, random.geometric, [1.1] * 10)
+ assert_raises(ValueError, random.geometric, -0.1)
+ assert_raises(ValueError, random.geometric, [-0.1] * 10)
+ with suppress_warnings() as sup:
+ sup.record(RuntimeWarning)
+ assert_raises(ValueError, random.geometric, np.nan)
+ assert_raises(ValueError, random.geometric, [np.nan] * 10)
+
+ def test_gumbel(self):
+ random.seed(self.seed)
+ actual = random.gumbel(loc=.123456789, scale=2.0, size=(3, 2))
+ desired = np.array([[0.19591898743416816, 0.34405539668096674],
+ [-1.4492522252274278, -1.47374816298446865],
+ [1.10651090478803416, -0.69535848626236174]])
+ assert_array_almost_equal(actual, desired, decimal=15)
+
+ def test_gumbel_0(self):
+ assert_equal(random.gumbel(scale=0), 0)
+ assert_raises(ValueError, random.gumbel, scale=-0.)
+
+ def test_hypergeometric(self):
+ random.seed(self.seed)
+ actual = random.hypergeometric(10.1, 5.5, 14, size=(3, 2))
+ desired = np.array([[10, 10],
+ [10, 10],
+ [9, 9]])
+ assert_array_equal(actual, desired)
+
+ # Test nbad = 0
+ actual = random.hypergeometric(5, 0, 3, size=4)
+ desired = np.array([3, 3, 3, 3])
+ assert_array_equal(actual, desired)
+
+ actual = random.hypergeometric(15, 0, 12, size=4)
+ desired = np.array([12, 12, 12, 12])
+ assert_array_equal(actual, desired)
+
+ # Test ngood = 0
+ actual = random.hypergeometric(0, 5, 3, size=4)
+ desired = np.array([0, 0, 0, 0])
+ assert_array_equal(actual, desired)
+
+ actual = random.hypergeometric(0, 15, 12, size=4)
+ desired = np.array([0, 0, 0, 0])
+ assert_array_equal(actual, desired)
+
+ def test_laplace(self):
+ random.seed(self.seed)
+ actual = random.laplace(loc=.123456789, scale=2.0, size=(3, 2))
+ desired = np.array([[0.66599721112760157, 0.52829452552221945],
+ [3.12791959514407125, 3.18202813572992005],
+ [-0.05391065675859356, 1.74901336242837324]])
+ assert_array_almost_equal(actual, desired, decimal=15)
+
+ def test_laplace_0(self):
+ assert_equal(random.laplace(scale=0), 0)
+ assert_raises(ValueError, random.laplace, scale=-0.)
+
+ def test_logistic(self):
+ random.seed(self.seed)
+ actual = random.logistic(loc=.123456789, scale=2.0, size=(3, 2))
+ desired = np.array([[1.09232835305011444, 0.8648196662399954],
+ [4.27818590694950185, 4.33897006346929714],
+ [-0.21682183359214885, 2.63373365386060332]])
+ assert_array_almost_equal(actual, desired, decimal=15)
+
+ def test_lognormal(self):
+ random.seed(self.seed)
+ actual = random.lognormal(mean=.123456789, sigma=2.0, size=(3, 2))
+ desired = np.array([[16.50698631688883822, 36.54846706092654784],
+ [22.67886599981281748, 0.71617561058995771],
+ [65.72798501792723869, 86.84341601437161273]])
+ assert_array_almost_equal(actual, desired, decimal=13)
+
+ def test_lognormal_0(self):
+ assert_equal(random.lognormal(sigma=0), 1)
+ assert_raises(ValueError, random.lognormal, sigma=-0.)
+
+ def test_logseries(self):
+ random.seed(self.seed)
+ actual = random.logseries(p=.923456789, size=(3, 2))
+ desired = np.array([[2, 2],
+ [6, 17],
+ [3, 6]])
+ assert_array_equal(actual, desired)
+
+ def test_logseries_exceptions(self):
+ with suppress_warnings() as sup:
+ sup.record(RuntimeWarning)
+ assert_raises(ValueError, random.logseries, np.nan)
+ assert_raises(ValueError, random.logseries, [np.nan] * 10)
+
+ def test_multinomial(self):
+ random.seed(self.seed)
+ actual = random.multinomial(20, [1 / 6.] * 6, size=(3, 2))
+ desired = np.array([[[4, 3, 5, 4, 2, 2],
+ [5, 2, 8, 2, 2, 1]],
+ [[3, 4, 3, 6, 0, 4],
+ [2, 1, 4, 3, 6, 4]],
+ [[4, 4, 2, 5, 2, 3],
+ [4, 3, 4, 2, 3, 4]]])
+ assert_array_equal(actual, desired)
+
+ def test_multivariate_normal(self):
+ random.seed(self.seed)
+ mean = (.123456789, 10)
+ cov = [[1, 0], [0, 1]]
+ size = (3, 2)
+ actual = random.multivariate_normal(mean, cov, size)
+ desired = np.array([[[1.463620246718631, 11.73759122771936],
+ [1.622445133300628, 9.771356667546383]],
+ [[2.154490787682787, 12.170324946056553],
+ [1.719909438201865, 9.230548443648306]],
+ [[0.689515026297799, 9.880729819607714],
+ [-0.023054015651998, 9.201096623542879]]])
+
+ assert_array_almost_equal(actual, desired, decimal=15)
+
+ # Check for default size, was raising deprecation warning
+ actual = random.multivariate_normal(mean, cov)
+ desired = np.array([0.895289569463708, 9.17180864067987])
+ assert_array_almost_equal(actual, desired, decimal=15)
+
+ # Check that non positive-semidefinite covariance warns with
+ # RuntimeWarning
+ mean = [0, 0]
+ cov = [[1, 2], [2, 1]]
+ assert_warns(RuntimeWarning, random.multivariate_normal, mean, cov)
+
+ # and that it doesn't warn with RuntimeWarning check_valid='ignore'
+ assert_no_warnings(random.multivariate_normal, mean, cov,
+ check_valid='ignore')
+
+ # and that it raises with RuntimeWarning check_valid='raises'
+ assert_raises(ValueError, random.multivariate_normal, mean, cov,
+ check_valid='raise')
+
+ cov = np.array([[1, 0.1], [0.1, 1]], dtype=np.float32)
+ with suppress_warnings() as sup:
+ random.multivariate_normal(mean, cov)
+ w = sup.record(RuntimeWarning)
+ assert len(w) == 0
+
+ mu = np.zeros(2)
+ cov = np.eye(2)
+ assert_raises(ValueError, random.multivariate_normal, mean, cov,
+ check_valid='other')
+ assert_raises(ValueError, random.multivariate_normal,
+ np.zeros((2, 1, 1)), cov)
+ assert_raises(ValueError, random.multivariate_normal,
+ mu, np.empty((3, 2)))
+ assert_raises(ValueError, random.multivariate_normal,
+ mu, np.eye(3))
+
+ def test_negative_binomial(self):
+ random.seed(self.seed)
+ actual = random.negative_binomial(n=100, p=.12345, size=(3, 2))
+ desired = np.array([[848, 841],
+ [892, 611],
+ [779, 647]])
+ assert_array_equal(actual, desired)
+
+ def test_negative_binomial_exceptions(self):
+ with suppress_warnings() as sup:
+ sup.record(RuntimeWarning)
+ assert_raises(ValueError, random.negative_binomial, 100, np.nan)
+ assert_raises(ValueError, random.negative_binomial, 100,
+ [np.nan] * 10)
+
+ def test_noncentral_chisquare(self):
+ random.seed(self.seed)
+ actual = random.noncentral_chisquare(df=5, nonc=5, size=(3, 2))
+ desired = np.array([[23.91905354498517511, 13.35324692733826346],
+ [31.22452661329736401, 16.60047399466177254],
+ [5.03461598262724586, 17.94973089023519464]])
+ assert_array_almost_equal(actual, desired, decimal=14)
+
+ actual = random.noncentral_chisquare(df=.5, nonc=.2, size=(3, 2))
+ desired = np.array([[1.47145377828516666, 0.15052899268012659],
+ [0.00943803056963588, 1.02647251615666169],
+ [0.332334982684171, 0.15451287602753125]])
+ assert_array_almost_equal(actual, desired, decimal=14)
+
+ random.seed(self.seed)
+ actual = random.noncentral_chisquare(df=5, nonc=0, size=(3, 2))
+ desired = np.array([[9.597154162763948, 11.725484450296079],
+ [10.413711048138335, 3.694475922923986],
+ [13.484222138963087, 14.377255424602957]])
+ assert_array_almost_equal(actual, desired, decimal=14)
+
+ def test_noncentral_f(self):
+ random.seed(self.seed)
+ actual = random.noncentral_f(dfnum=5, dfden=2, nonc=1,
+ size=(3, 2))
+ desired = np.array([[1.40598099674926669, 0.34207973179285761],
+ [3.57715069265772545, 7.92632662577829805],
+ [0.43741599463544162, 1.1774208752428319]])
+ assert_array_almost_equal(actual, desired, decimal=14)
+
+ def test_noncentral_f_nan(self):
+ random.seed(self.seed)
+ actual = random.noncentral_f(dfnum=5, dfden=2, nonc=np.nan)
+ assert np.isnan(actual)
+
+ def test_normal(self):
+ random.seed(self.seed)
+ actual = random.normal(loc=.123456789, scale=2.0, size=(3, 2))
+ desired = np.array([[2.80378370443726244, 3.59863924443872163],
+ [3.121433477601256, -0.33382987590723379],
+ [4.18552478636557357, 4.46410668111310471]])
+ assert_array_almost_equal(actual, desired, decimal=15)
+
+ def test_normal_0(self):
+ assert_equal(random.normal(scale=0), 0)
+ assert_raises(ValueError, random.normal, scale=-0.)
+
+ def test_pareto(self):
+ random.seed(self.seed)
+ actual = random.pareto(a=.123456789, size=(3, 2))
+ desired = np.array(
+ [[2.46852460439034849e+03, 1.41286880810518346e+03],
+ [5.28287797029485181e+07, 6.57720981047328785e+07],
+ [1.40840323350391515e+02, 1.98390255135251704e+05]])
+ # For some reason on 32-bit x86 Ubuntu 12.10 the [1, 0] entry in this
+ # matrix differs by 24 nulps. Discussion:
+ # https://mail.python.org/pipermail/numpy-discussion/2012-September/063801.html
+ # Consensus is that this is probably some gcc quirk that affects
+ # rounding but not in any important way, so we just use a looser
+ # tolerance on this test:
+ np.testing.assert_array_almost_equal_nulp(actual, desired, nulp=30)
+
+ def test_poisson(self):
+ random.seed(self.seed)
+ actual = random.poisson(lam=.123456789, size=(3, 2))
+ desired = np.array([[0, 0],
+ [1, 0],
+ [0, 0]])
+ assert_array_equal(actual, desired)
+
+ def test_poisson_exceptions(self):
+ lambig = np.iinfo('l').max
+ lamneg = -1
+ assert_raises(ValueError, random.poisson, lamneg)
+ assert_raises(ValueError, random.poisson, [lamneg] * 10)
+ assert_raises(ValueError, random.poisson, lambig)
+ assert_raises(ValueError, random.poisson, [lambig] * 10)
+ with suppress_warnings() as sup:
+ sup.record(RuntimeWarning)
+ assert_raises(ValueError, random.poisson, np.nan)
+ assert_raises(ValueError, random.poisson, [np.nan] * 10)
+
+ def test_power(self):
+ random.seed(self.seed)
+ actual = random.power(a=.123456789, size=(3, 2))
+ desired = np.array([[0.02048932883240791, 0.01424192241128213],
+ [0.38446073748535298, 0.39499689943484395],
+ [0.00177699707563439, 0.13115505880863756]])
+ assert_array_almost_equal(actual, desired, decimal=15)
+
+ def test_rayleigh(self):
+ random.seed(self.seed)
+ actual = random.rayleigh(scale=10, size=(3, 2))
+ desired = np.array([[13.8882496494248393, 13.383318339044731],
+ [20.95413364294492098, 21.08285015800712614],
+ [11.06066537006854311, 17.35468505778271009]])
+ assert_array_almost_equal(actual, desired, decimal=14)
+
+ def test_rayleigh_0(self):
+ assert_equal(random.rayleigh(scale=0), 0)
+ assert_raises(ValueError, random.rayleigh, scale=-0.)
+
+ def test_standard_cauchy(self):
+ random.seed(self.seed)
+ actual = random.standard_cauchy(size=(3, 2))
+ desired = np.array([[0.77127660196445336, -6.55601161955910605],
+ [0.93582023391158309, -2.07479293013759447],
+ [-4.74601644297011926, 0.18338989290760804]])
+ assert_array_almost_equal(actual, desired, decimal=15)
+
+ def test_standard_exponential(self):
+ random.seed(self.seed)
+ actual = random.standard_exponential(size=(3, 2))
+ desired = np.array([[0.96441739162374596, 0.89556604882105506],
+ [2.1953785836319808, 2.22243285392490542],
+ [0.6116915921431676, 1.50592546727413201]])
+ assert_array_almost_equal(actual, desired, decimal=15)
+
+ def test_standard_gamma(self):
+ random.seed(self.seed)
+ actual = random.standard_gamma(shape=3, size=(3, 2))
+ desired = np.array([[5.50841531318455058, 6.62953470301903103],
+ [5.93988484943779227, 2.31044849402133989],
+ [7.54838614231317084, 8.012756093271868]])
+ assert_array_almost_equal(actual, desired, decimal=14)
+
+ def test_standard_gamma_0(self):
+ assert_equal(random.standard_gamma(shape=0), 0)
+ assert_raises(ValueError, random.standard_gamma, shape=-0.)
+
+ def test_standard_normal(self):
+ random.seed(self.seed)
+ actual = random.standard_normal(size=(3, 2))
+ desired = np.array([[1.34016345771863121, 1.73759122771936081],
+ [1.498988344300628, -0.2286433324536169],
+ [2.031033998682787, 2.17032494605655257]])
+ assert_array_almost_equal(actual, desired, decimal=15)
+
+ def test_randn_singleton(self):
+ random.seed(self.seed)
+ actual = random.randn()
+ desired = np.array(1.34016345771863121)
+ assert_array_almost_equal(actual, desired, decimal=15)
+
+ def test_standard_t(self):
+ random.seed(self.seed)
+ actual = random.standard_t(df=10, size=(3, 2))
+ desired = np.array([[0.97140611862659965, -0.08830486548450577],
+ [1.36311143689505321, -0.55317463909867071],
+ [-0.18473749069684214, 0.61181537341755321]])
+ assert_array_almost_equal(actual, desired, decimal=15)
+
+ def test_triangular(self):
+ random.seed(self.seed)
+ actual = random.triangular(left=5.12, mode=10.23, right=20.34,
+ size=(3, 2))
+ desired = np.array([[12.68117178949215784, 12.4129206149193152],
+ [16.20131377335158263, 16.25692138747600524],
+ [11.20400690911820263, 14.4978144835829923]])
+ assert_array_almost_equal(actual, desired, decimal=14)
+
+ def test_uniform(self):
+ random.seed(self.seed)
+ actual = random.uniform(low=1.23, high=10.54, size=(3, 2))
+ desired = np.array([[6.99097932346268003, 6.73801597444323974],
+ [9.50364421400426274, 9.53130618907631089],
+ [5.48995325769805476, 8.47493103280052118]])
+ assert_array_almost_equal(actual, desired, decimal=15)
+
+ def test_uniform_range_bounds(self):
+ fmin = np.finfo('float').min
+ fmax = np.finfo('float').max
+
+ func = random.uniform
+ assert_raises(OverflowError, func, -np.inf, 0)
+ assert_raises(OverflowError, func, 0, np.inf)
+ assert_raises(OverflowError, func, fmin, fmax)
+ assert_raises(OverflowError, func, [-np.inf], [0])
+ assert_raises(OverflowError, func, [0], [np.inf])
+
+ # (fmax / 1e17) - fmin is within range, so this should not throw
+ # account for i386 extended precision DBL_MAX / 1e17 + DBL_MAX >
+ # DBL_MAX by increasing fmin a bit
+ random.uniform(low=np.nextafter(fmin, 1), high=fmax / 1e17)
+
+ def test_scalar_exception_propagation(self):
+ # Tests that exceptions are correctly propagated in distributions
+ # when called with objects that throw exceptions when converted to
+ # scalars.
+ #
+ # Regression test for gh: 8865
+
+ class ThrowingFloat(np.ndarray):
+ def __float__(self):
+ raise TypeError
+
+ throwing_float = np.array(1.0).view(ThrowingFloat)
+ assert_raises(TypeError, random.uniform, throwing_float,
+ throwing_float)
+
+ class ThrowingInteger(np.ndarray):
+ def __int__(self):
+ raise TypeError
+
+ throwing_int = np.array(1).view(ThrowingInteger)
+ assert_raises(TypeError, random.hypergeometric, throwing_int, 1, 1)
+
+ def test_vonmises(self):
+ random.seed(self.seed)
+ actual = random.vonmises(mu=1.23, kappa=1.54, size=(3, 2))
+ desired = np.array([[2.28567572673902042, 2.89163838442285037],
+ [0.38198375564286025, 2.57638023113890746],
+ [1.19153771588353052, 1.83509849681825354]])
+ assert_array_almost_equal(actual, desired, decimal=15)
+
+ def test_vonmises_small(self):
+ # check infinite loop, gh-4720
+ random.seed(self.seed)
+ r = random.vonmises(mu=0., kappa=1.1e-8, size=10**6)
+ assert_(np.isfinite(r).all())
+
+ def test_vonmises_nan(self):
+ random.seed(self.seed)
+ r = random.vonmises(mu=0., kappa=np.nan)
+ assert_(np.isnan(r))
+
+ def test_wald(self):
+ random.seed(self.seed)
+ actual = random.wald(mean=1.23, scale=1.54, size=(3, 2))
+ desired = np.array([[3.82935265715889983, 5.13125249184285526],
+ [0.35045403618358717, 1.50832396872003538],
+ [0.24124319895843183, 0.22031101461955038]])
+ assert_array_almost_equal(actual, desired, decimal=14)
+
+ def test_weibull(self):
+ random.seed(self.seed)
+ actual = random.weibull(a=1.23, size=(3, 2))
+ desired = np.array([[0.97097342648766727, 0.91422896443565516],
+ [1.89517770034962929, 1.91414357960479564],
+ [0.67057783752390987, 1.39494046635066793]])
+ assert_array_almost_equal(actual, desired, decimal=15)
+
+ def test_weibull_0(self):
+ random.seed(self.seed)
+ assert_equal(random.weibull(a=0, size=12), np.zeros(12))
+ assert_raises(ValueError, random.weibull, a=-0.)
+
+ def test_zipf(self):
+ random.seed(self.seed)
+ actual = random.zipf(a=1.23, size=(3, 2))
+ desired = np.array([[66, 29],
+ [1, 1],
+ [3, 13]])
+ assert_array_equal(actual, desired)
+
+
+class TestBroadcast(object):
+ # tests that functions that broadcast behave
+ # correctly when presented with non-scalar arguments
+ def setup(self):
+ self.seed = 123456789
+
+ def set_seed(self):
+ random.seed(self.seed)
+
+ def test_uniform(self):
+ low = [0]
+ high = [1]
+ uniform = random.uniform
+ desired = np.array([0.53283302478975902,
+ 0.53413660089041659,
+ 0.50955303552646702])
+
+ self.set_seed()
+ actual = uniform(low * 3, high)
+ assert_array_almost_equal(actual, desired, decimal=14)
+
+ self.set_seed()
+ actual = uniform(low, high * 3)
+ assert_array_almost_equal(actual, desired, decimal=14)
+
+ def test_normal(self):
+ loc = [0]
+ scale = [1]
+ bad_scale = [-1]
+ normal = random.normal
+ desired = np.array([2.2129019979039612,
+ 2.1283977976520019,
+ 1.8417114045748335])
+
+ self.set_seed()
+ actual = normal(loc * 3, scale)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, normal, loc * 3, bad_scale)
+
+ self.set_seed()
+ actual = normal(loc, scale * 3)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, normal, loc, bad_scale * 3)
+
+ def test_beta(self):
+ a = [1]
+ b = [2]
+ bad_a = [-1]
+ bad_b = [-2]
+ beta = random.beta
+ desired = np.array([0.19843558305989056,
+ 0.075230336409423643,
+ 0.24976865978980844])
+
+ self.set_seed()
+ actual = beta(a * 3, b)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, beta, bad_a * 3, b)
+ assert_raises(ValueError, beta, a * 3, bad_b)
+
+ self.set_seed()
+ actual = beta(a, b * 3)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, beta, bad_a, b * 3)
+ assert_raises(ValueError, beta, a, bad_b * 3)
+
+ def test_exponential(self):
+ scale = [1]
+ bad_scale = [-1]
+ exponential = random.exponential
+ desired = np.array([0.76106853658845242,
+ 0.76386282278691653,
+ 0.71243813125891797])
+
+ self.set_seed()
+ actual = exponential(scale * 3)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, exponential, bad_scale * 3)
+
+ def test_standard_gamma(self):
+ shape = [1]
+ bad_shape = [-1]
+ std_gamma = random.standard_gamma
+ desired = np.array([0.76106853658845242,
+ 0.76386282278691653,
+ 0.71243813125891797])
+
+ self.set_seed()
+ actual = std_gamma(shape * 3)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, std_gamma, bad_shape * 3)
+
+ def test_gamma(self):
+ shape = [1]
+ scale = [2]
+ bad_shape = [-1]
+ bad_scale = [-2]
+ gamma = random.gamma
+ desired = np.array([1.5221370731769048,
+ 1.5277256455738331,
+ 1.4248762625178359])
+
+ self.set_seed()
+ actual = gamma(shape * 3, scale)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, gamma, bad_shape * 3, scale)
+ assert_raises(ValueError, gamma, shape * 3, bad_scale)
+
+ self.set_seed()
+ actual = gamma(shape, scale * 3)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, gamma, bad_shape, scale * 3)
+ assert_raises(ValueError, gamma, shape, bad_scale * 3)
+
+ def test_f(self):
+ dfnum = [1]
+ dfden = [2]
+ bad_dfnum = [-1]
+ bad_dfden = [-2]
+ f = random.f
+ desired = np.array([0.80038951638264799,
+ 0.86768719635363512,
+ 2.7251095168386801])
+
+ self.set_seed()
+ actual = f(dfnum * 3, dfden)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, f, bad_dfnum * 3, dfden)
+ assert_raises(ValueError, f, dfnum * 3, bad_dfden)
+
+ self.set_seed()
+ actual = f(dfnum, dfden * 3)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, f, bad_dfnum, dfden * 3)
+ assert_raises(ValueError, f, dfnum, bad_dfden * 3)
+
+ def test_noncentral_f(self):
+ dfnum = [2]
+ dfden = [3]
+ nonc = [4]
+ bad_dfnum = [0]
+ bad_dfden = [-1]
+ bad_nonc = [-2]
+ nonc_f = random.noncentral_f
+ desired = np.array([9.1393943263705211,
+ 13.025456344595602,
+ 8.8018098359100545])
+
+ self.set_seed()
+ actual = nonc_f(dfnum * 3, dfden, nonc)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert np.all(np.isnan(nonc_f(dfnum, dfden, [np.nan] * 3)))
+
+ assert_raises(ValueError, nonc_f, bad_dfnum * 3, dfden, nonc)
+ assert_raises(ValueError, nonc_f, dfnum * 3, bad_dfden, nonc)
+ assert_raises(ValueError, nonc_f, dfnum * 3, dfden, bad_nonc)
+
+ self.set_seed()
+ actual = nonc_f(dfnum, dfden * 3, nonc)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, nonc_f, bad_dfnum, dfden * 3, nonc)
+ assert_raises(ValueError, nonc_f, dfnum, bad_dfden * 3, nonc)
+ assert_raises(ValueError, nonc_f, dfnum, dfden * 3, bad_nonc)
+
+ self.set_seed()
+ actual = nonc_f(dfnum, dfden, nonc * 3)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, nonc_f, bad_dfnum, dfden, nonc * 3)
+ assert_raises(ValueError, nonc_f, dfnum, bad_dfden, nonc * 3)
+ assert_raises(ValueError, nonc_f, dfnum, dfden, bad_nonc * 3)
+
+ def test_noncentral_f_small_df(self):
+ self.set_seed()
+ desired = np.array([6.869638627492048, 0.785880199263955])
+ actual = random.noncentral_f(0.9, 0.9, 2, size=2)
+ assert_array_almost_equal(actual, desired, decimal=14)
+
+ def test_chisquare(self):
+ df = [1]
+ bad_df = [-1]
+ chisquare = random.chisquare
+ desired = np.array([0.57022801133088286,
+ 0.51947702108840776,
+ 0.1320969254923558])
+
+ self.set_seed()
+ actual = chisquare(df * 3)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, chisquare, bad_df * 3)
+
+ def test_noncentral_chisquare(self):
+ df = [1]
+ nonc = [2]
+ bad_df = [-1]
+ bad_nonc = [-2]
+ nonc_chi = random.noncentral_chisquare
+ desired = np.array([9.0015599467913763,
+ 4.5804135049718742,
+ 6.0872302432834564])
+
+ self.set_seed()
+ actual = nonc_chi(df * 3, nonc)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, nonc_chi, bad_df * 3, nonc)
+ assert_raises(ValueError, nonc_chi, df * 3, bad_nonc)
+
+ self.set_seed()
+ actual = nonc_chi(df, nonc * 3)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, nonc_chi, bad_df, nonc * 3)
+ assert_raises(ValueError, nonc_chi, df, bad_nonc * 3)
+
+ def test_standard_t(self):
+ df = [1]
+ bad_df = [-1]
+ t = random.standard_t
+ desired = np.array([3.0702872575217643,
+ 5.8560725167361607,
+ 1.0274791436474273])
+
+ self.set_seed()
+ actual = t(df * 3)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, t, bad_df * 3)
+ assert_raises(ValueError, random.standard_t, bad_df * 3)
+
+ def test_vonmises(self):
+ mu = [2]
+ kappa = [1]
+ bad_kappa = [-1]
+ vonmises = random.vonmises
+ desired = np.array([2.9883443664201312,
+ -2.7064099483995943,
+ -1.8672476700665914])
+
+ self.set_seed()
+ actual = vonmises(mu * 3, kappa)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, vonmises, mu * 3, bad_kappa)
+
+ self.set_seed()
+ actual = vonmises(mu, kappa * 3)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, vonmises, mu, bad_kappa * 3)
+
+ def test_pareto(self):
+ a = [1]
+ bad_a = [-1]
+ pareto = random.pareto
+ desired = np.array([1.1405622680198362,
+ 1.1465519762044529,
+ 1.0389564467453547])
+
+ self.set_seed()
+ actual = pareto(a * 3)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, pareto, bad_a * 3)
+ assert_raises(ValueError, random.pareto, bad_a * 3)
+
+ def test_weibull(self):
+ a = [1]
+ bad_a = [-1]
+ weibull = random.weibull
+ desired = np.array([0.76106853658845242,
+ 0.76386282278691653,
+ 0.71243813125891797])
+
+ self.set_seed()
+ actual = weibull(a * 3)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, weibull, bad_a * 3)
+ assert_raises(ValueError, random.weibull, bad_a * 3)
+
+ def test_power(self):
+ a = [1]
+ bad_a = [-1]
+ power = random.power
+ desired = np.array([0.53283302478975902,
+ 0.53413660089041659,
+ 0.50955303552646702])
+
+ self.set_seed()
+ actual = power(a * 3)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, power, bad_a * 3)
+ assert_raises(ValueError, random.power, bad_a * 3)
+
+ def test_laplace(self):
+ loc = [0]
+ scale = [1]
+ bad_scale = [-1]
+ laplace = random.laplace
+ desired = np.array([0.067921356028507157,
+ 0.070715642226971326,
+ 0.019290950698972624])
+
+ self.set_seed()
+ actual = laplace(loc * 3, scale)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, laplace, loc * 3, bad_scale)
+
+ self.set_seed()
+ actual = laplace(loc, scale * 3)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, laplace, loc, bad_scale * 3)
+
+ def test_gumbel(self):
+ loc = [0]
+ scale = [1]
+ bad_scale = [-1]
+ gumbel = random.gumbel
+ desired = np.array([0.2730318639556768,
+ 0.26936705726291116,
+ 0.33906220393037939])
+
+ self.set_seed()
+ actual = gumbel(loc * 3, scale)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, gumbel, loc * 3, bad_scale)
+
+ self.set_seed()
+ actual = gumbel(loc, scale * 3)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, gumbel, loc, bad_scale * 3)
+
+ def test_logistic(self):
+ loc = [0]
+ scale = [1]
+ bad_scale = [-1]
+ logistic = random.logistic
+ desired = np.array([0.13152135837586171,
+ 0.13675915696285773,
+ 0.038216792802833396])
+
+ self.set_seed()
+ actual = logistic(loc * 3, scale)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, logistic, loc * 3, bad_scale)
+
+ self.set_seed()
+ actual = logistic(loc, scale * 3)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, logistic, loc, bad_scale * 3)
+ assert_equal(random.logistic(1.0, 0.0), 1.0)
+
+ def test_lognormal(self):
+ mean = [0]
+ sigma = [1]
+ bad_sigma = [-1]
+ lognormal = random.lognormal
+ desired = np.array([9.1422086044848427,
+ 8.4013952870126261,
+ 6.3073234116578671])
+
+ self.set_seed()
+ actual = lognormal(mean * 3, sigma)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, lognormal, mean * 3, bad_sigma)
+ assert_raises(ValueError, random.lognormal, mean * 3, bad_sigma)
+
+ self.set_seed()
+ actual = lognormal(mean, sigma * 3)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, lognormal, mean, bad_sigma * 3)
+ assert_raises(ValueError, random.lognormal, mean, bad_sigma * 3)
+
+ def test_rayleigh(self):
+ scale = [1]
+ bad_scale = [-1]
+ rayleigh = random.rayleigh
+ desired = np.array([1.2337491937897689,
+ 1.2360119924878694,
+ 1.1936818095781789])
+
+ self.set_seed()
+ actual = rayleigh(scale * 3)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, rayleigh, bad_scale * 3)
+
+ def test_wald(self):
+ mean = [0.5]
+ scale = [1]
+ bad_mean = [0]
+ bad_scale = [-2]
+ wald = random.wald
+ desired = np.array([0.11873681120271318,
+ 0.12450084820795027,
+ 0.9096122728408238])
+
+ self.set_seed()
+ actual = wald(mean * 3, scale)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, wald, bad_mean * 3, scale)
+ assert_raises(ValueError, wald, mean * 3, bad_scale)
+ assert_raises(ValueError, random.wald, bad_mean * 3, scale)
+ assert_raises(ValueError, random.wald, mean * 3, bad_scale)
+
+ self.set_seed()
+ actual = wald(mean, scale * 3)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, wald, bad_mean, scale * 3)
+ assert_raises(ValueError, wald, mean, bad_scale * 3)
+ assert_raises(ValueError, wald, 0.0, 1)
+ assert_raises(ValueError, wald, 0.5, 0.0)
+
+ def test_triangular(self):
+ left = [1]
+ right = [3]
+ mode = [2]
+ bad_left_one = [3]
+ bad_mode_one = [4]
+ bad_left_two, bad_mode_two = right * 2
+ triangular = random.triangular
+ desired = np.array([2.03339048710429,
+ 2.0347400359389356,
+ 2.0095991069536208])
+
+ self.set_seed()
+ actual = triangular(left * 3, mode, right)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, triangular, bad_left_one * 3, mode, right)
+ assert_raises(ValueError, triangular, left * 3, bad_mode_one, right)
+ assert_raises(ValueError, triangular, bad_left_two * 3, bad_mode_two,
+ right)
+
+ self.set_seed()
+ actual = triangular(left, mode * 3, right)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, triangular, bad_left_one, mode * 3, right)
+ assert_raises(ValueError, triangular, left, bad_mode_one * 3, right)
+ assert_raises(ValueError, triangular, bad_left_two, bad_mode_two * 3,
+ right)
+
+ self.set_seed()
+ actual = triangular(left, mode, right * 3)
+ assert_array_almost_equal(actual, desired, decimal=14)
+ assert_raises(ValueError, triangular, bad_left_one, mode, right * 3)
+ assert_raises(ValueError, triangular, left, bad_mode_one, right * 3)
+ assert_raises(ValueError, triangular, bad_left_two, bad_mode_two,
+ right * 3)
+
+ assert_raises(ValueError, triangular, 10., 0., 20.)
+ assert_raises(ValueError, triangular, 10., 25., 20.)
+ assert_raises(ValueError, triangular, 10., 10., 10.)
+
+ def test_binomial(self):
+ n = [1]
+ p = [0.5]
+ bad_n = [-1]
+ bad_p_one = [-1]
+ bad_p_two = [1.5]
+ binom = random.binomial
+ desired = np.array([1, 1, 1])
+
+ self.set_seed()
+ actual = binom(n * 3, p)
+ assert_array_equal(actual, desired)
+ assert_raises(ValueError, binom, bad_n * 3, p)
+ assert_raises(ValueError, binom, n * 3, bad_p_one)
+ assert_raises(ValueError, binom, n * 3, bad_p_two)
+
+ self.set_seed()
+ actual = binom(n, p * 3)
+ assert_array_equal(actual, desired)
+ assert_raises(ValueError, binom, bad_n, p * 3)
+ assert_raises(ValueError, binom, n, bad_p_one * 3)
+ assert_raises(ValueError, binom, n, bad_p_two * 3)
+
+ def test_negative_binomial(self):
+ n = [1]
+ p = [0.5]
+ bad_n = [-1]
+ bad_p_one = [-1]
+ bad_p_two = [1.5]
+ neg_binom = random.negative_binomial
+ desired = np.array([1, 0, 1])
+
+ self.set_seed()
+ actual = neg_binom(n * 3, p)
+ assert_array_equal(actual, desired)
+ assert_raises(ValueError, neg_binom, bad_n * 3, p)
+ assert_raises(ValueError, neg_binom, n * 3, bad_p_one)
+ assert_raises(ValueError, neg_binom, n * 3, bad_p_two)
+
+ self.set_seed()
+ actual = neg_binom(n, p * 3)
+ assert_array_equal(actual, desired)
+ assert_raises(ValueError, neg_binom, bad_n, p * 3)
+ assert_raises(ValueError, neg_binom, n, bad_p_one * 3)
+ assert_raises(ValueError, neg_binom, n, bad_p_two * 3)
+
+ def test_poisson(self):
+ max_lam = random.RandomState()._poisson_lam_max
+
+ lam = [1]
+ bad_lam_one = [-1]
+ bad_lam_two = [max_lam * 2]
+ poisson = random.poisson
+ desired = np.array([1, 1, 0])
+
+ self.set_seed()
+ actual = poisson(lam * 3)
+ assert_array_equal(actual, desired)
+ assert_raises(ValueError, poisson, bad_lam_one * 3)
+ assert_raises(ValueError, poisson, bad_lam_two * 3)
+
+ def test_zipf(self):
+ a = [2]
+ bad_a = [0]
+ zipf = random.zipf
+ desired = np.array([2, 2, 1])
+
+ self.set_seed()
+ actual = zipf(a * 3)
+ assert_array_equal(actual, desired)
+ assert_raises(ValueError, zipf, bad_a * 3)
+ with np.errstate(invalid='ignore'):
+ assert_raises(ValueError, zipf, np.nan)
+ assert_raises(ValueError, zipf, [0, 0, np.nan])
+
+ def test_geometric(self):
+ p = [0.5]
+ bad_p_one = [-1]
+ bad_p_two = [1.5]
+ geom = random.geometric
+ desired = np.array([2, 2, 2])
+
+ self.set_seed()
+ actual = geom(p * 3)
+ assert_array_equal(actual, desired)
+ assert_raises(ValueError, geom, bad_p_one * 3)
+ assert_raises(ValueError, geom, bad_p_two * 3)
+
+ def test_hypergeometric(self):
+ ngood = [1]
+ nbad = [2]
+ nsample = [2]
+ bad_ngood = [-1]
+ bad_nbad = [-2]
+ bad_nsample_one = [0]
+ bad_nsample_two = [4]
+ hypergeom = random.hypergeometric
+ desired = np.array([1, 1, 1])
+
+ self.set_seed()
+ actual = hypergeom(ngood * 3, nbad, nsample)
+ assert_array_equal(actual, desired)
+ assert_raises(ValueError, hypergeom, bad_ngood * 3, nbad, nsample)
+ assert_raises(ValueError, hypergeom, ngood * 3, bad_nbad, nsample)
+ assert_raises(ValueError, hypergeom, ngood * 3, nbad, bad_nsample_one)
+ assert_raises(ValueError, hypergeom, ngood * 3, nbad, bad_nsample_two)
+
+ self.set_seed()
+ actual = hypergeom(ngood, nbad * 3, nsample)
+ assert_array_equal(actual, desired)
+ assert_raises(ValueError, hypergeom, bad_ngood, nbad * 3, nsample)
+ assert_raises(ValueError, hypergeom, ngood, bad_nbad * 3, nsample)
+ assert_raises(ValueError, hypergeom, ngood, nbad * 3, bad_nsample_one)
+ assert_raises(ValueError, hypergeom, ngood, nbad * 3, bad_nsample_two)
+
+ self.set_seed()
+ actual = hypergeom(ngood, nbad, nsample * 3)
+ assert_array_equal(actual, desired)
+ assert_raises(ValueError, hypergeom, bad_ngood, nbad, nsample * 3)
+ assert_raises(ValueError, hypergeom, ngood, bad_nbad, nsample * 3)
+ assert_raises(ValueError, hypergeom, ngood, nbad, bad_nsample_one * 3)
+ assert_raises(ValueError, hypergeom, ngood, nbad, bad_nsample_two * 3)
+
+ assert_raises(ValueError, hypergeom, -1, 10, 20)
+ assert_raises(ValueError, hypergeom, 10, -1, 20)
+ assert_raises(ValueError, hypergeom, 10, 10, 0)
+ assert_raises(ValueError, hypergeom, 10, 10, 25)
+
+ def test_logseries(self):
+ p = [0.5]
+ bad_p_one = [2]
+ bad_p_two = [-1]
+ logseries = random.logseries
+ desired = np.array([1, 1, 1])
+
+ self.set_seed()
+ actual = logseries(p * 3)
+ assert_array_equal(actual, desired)
+ assert_raises(ValueError, logseries, bad_p_one * 3)
+ assert_raises(ValueError, logseries, bad_p_two * 3)
+
+
+class TestThread(object):
+ # make sure each state produces the same sequence even in threads
+ def setup(self):
+ self.seeds = range(4)
+
+ def check_function(self, function, sz):
+ from threading import Thread
+
+ out1 = np.empty((len(self.seeds),) + sz)
+ out2 = np.empty((len(self.seeds),) + sz)
+
+ # threaded generation
+ t = [Thread(target=function, args=(random.RandomState(s), o))
+ for s, o in zip(self.seeds, out1)]
+ [x.start() for x in t]
+ [x.join() for x in t]
+
+ # the same serial
+ for s, o in zip(self.seeds, out2):
+ function(random.RandomState(s), o)
+
+ # these platforms change x87 fpu precision mode in threads
+ if np.intp().dtype.itemsize == 4 and sys.platform == "win32":
+ assert_array_almost_equal(out1, out2)
+ else:
+ assert_array_equal(out1, out2)
+
+ def test_normal(self):
+ def gen_random(state, out):
+ out[...] = state.normal(size=10000)
+
+ self.check_function(gen_random, sz=(10000,))
+
+ def test_exp(self):
+ def gen_random(state, out):
+ out[...] = state.exponential(scale=np.ones((100, 1000)))
+
+ self.check_function(gen_random, sz=(100, 1000))
+
+ def test_multinomial(self):
+ def gen_random(state, out):
+ out[...] = state.multinomial(10, [1 / 6.] * 6, size=10000)
+
+ self.check_function(gen_random, sz=(10000, 6))
+
+
+# See Issue #4263
+class TestSingleEltArrayInput(object):
+ def setup(self):
+ self.argOne = np.array([2])
+ self.argTwo = np.array([3])
+ self.argThree = np.array([4])
+ self.tgtShape = (1,)
+
+ def test_one_arg_funcs(self):
+ funcs = (random.exponential, random.standard_gamma,
+ random.chisquare, random.standard_t,
+ random.pareto, random.weibull,
+ random.power, random.rayleigh,
+ random.poisson, random.zipf,
+ random.geometric, random.logseries)
+
+ probfuncs = (random.geometric, random.logseries)
+
+ for func in funcs:
+ if func in probfuncs: # p < 1.0
+ out = func(np.array([0.5]))
+
+ else:
+ out = func(self.argOne)
+
+ assert_equal(out.shape, self.tgtShape)
+
+ def test_two_arg_funcs(self):
+ funcs = (random.uniform, random.normal,
+ random.beta, random.gamma,
+ random.f, random.noncentral_chisquare,
+ random.vonmises, random.laplace,
+ random.gumbel, random.logistic,
+ random.lognormal, random.wald,
+ random.binomial, random.negative_binomial)
+
+ probfuncs = (random.binomial, random.negative_binomial)
+
+ for func in funcs:
+ if func in probfuncs: # p <= 1
+ argTwo = np.array([0.5])
+
+ else:
+ argTwo = self.argTwo
+
+ out = func(self.argOne, argTwo)
+ assert_equal(out.shape, self.tgtShape)
+
+ out = func(self.argOne[0], argTwo)
+ assert_equal(out.shape, self.tgtShape)
+
+ out = func(self.argOne, argTwo[0])
+ assert_equal(out.shape, self.tgtShape)
+
+ def test_three_arg_funcs(self):
+ funcs = [random.noncentral_f, random.triangular,
+ random.hypergeometric]
+
+ for func in funcs:
+ out = func(self.argOne, self.argTwo, self.argThree)
+ assert_equal(out.shape, self.tgtShape)
+
+ out = func(self.argOne[0], self.argTwo, self.argThree)
+ assert_equal(out.shape, self.tgtShape)
+
+ out = func(self.argOne, self.argTwo[0], self.argThree)
+ assert_equal(out.shape, self.tgtShape)
+
+
+# Ensure returned array dtype is corect for platform
+def test_integer_dtype(int_func):
+ random.seed(123456789)
+ fname, args, md5 = int_func
+ f = getattr(random, fname)
+ actual = f(*args, size=2)
+ assert_(actual.dtype == np.dtype('l'))
+
+
+def test_integer_repeat(int_func):
+ random.seed(123456789)
+ fname, args, md5 = int_func
+ f = getattr(random, fname)
+ val = f(*args, size=1000000)
+ if sys.byteorder != 'little':
+ val = val.byteswap()
+ res = hashlib.md5(val.view(np.int8)).hexdigest()
+ assert_(res == md5)
diff --git a/numpy/random/tests/test_randomstate_regression.py b/numpy/random/tests/test_randomstate_regression.py
new file mode 100644
index 000000000..9c319319e
--- /dev/null
+++ b/numpy/random/tests/test_randomstate_regression.py
@@ -0,0 +1,157 @@
+import sys
+from numpy.testing import (
+ assert_, assert_array_equal, assert_raises,
+ )
+from numpy.compat import long
+import numpy as np
+
+from numpy.random import mtrand as random
+
+
+class TestRegression(object):
+
+ def test_VonMises_range(self):
+ # Make sure generated random variables are in [-pi, pi].
+ # Regression test for ticket #986.
+ for mu in np.linspace(-7., 7., 5):
+ r = random.vonmises(mu, 1, 50)
+ assert_(np.all(r > -np.pi) and np.all(r <= np.pi))
+
+ def test_hypergeometric_range(self):
+ # Test for ticket #921
+ assert_(np.all(random.hypergeometric(3, 18, 11, size=10) < 4))
+ assert_(np.all(random.hypergeometric(18, 3, 11, size=10) > 0))
+
+ # Test for ticket #5623
+ args = [
+ (2**20 - 2, 2**20 - 2, 2**20 - 2), # Check for 32-bit systems
+ ]
+ is_64bits = sys.maxsize > 2**32
+ if is_64bits and sys.platform != 'win32':
+ # Check for 64-bit systems
+ args.append((2**40 - 2, 2**40 - 2, 2**40 - 2))
+ for arg in args:
+ assert_(random.hypergeometric(*arg) > 0)
+
+ def test_logseries_convergence(self):
+ # Test for ticket #923
+ N = 1000
+ random.seed(0)
+ rvsn = random.logseries(0.8, size=N)
+ # these two frequency counts should be close to theoretical
+ # numbers with this large sample
+ # theoretical large N result is 0.49706795
+ freq = np.sum(rvsn == 1) / float(N)
+ msg = "Frequency was %f, should be > 0.45" % freq
+ assert_(freq > 0.45, msg)
+ # theoretical large N result is 0.19882718
+ freq = np.sum(rvsn == 2) / float(N)
+ msg = "Frequency was %f, should be < 0.23" % freq
+ assert_(freq < 0.23, msg)
+
+ def test_permutation_longs(self):
+ random.seed(1234)
+ a = random.permutation(12)
+ random.seed(1234)
+ b = random.permutation(long(12))
+ assert_array_equal(a, b)
+
+ def test_shuffle_mixed_dimension(self):
+ # Test for trac ticket #2074
+ for t in [[1, 2, 3, None],
+ [(1, 1), (2, 2), (3, 3), None],
+ [1, (2, 2), (3, 3), None],
+ [(1, 1), 2, 3, None]]:
+ random.seed(12345)
+ shuffled = list(t)
+ random.shuffle(shuffled)
+ assert_array_equal(shuffled, [t[0], t[3], t[1], t[2]])
+
+ def test_call_within_randomstate(self):
+ # Check that custom RandomState does not call into global state
+ m = random.RandomState()
+ res = np.array([0, 8, 7, 2, 1, 9, 4, 7, 0, 3])
+ for i in range(3):
+ random.seed(i)
+ m.seed(4321)
+ # If m.state is not honored, the result will change
+ assert_array_equal(m.choice(10, size=10, p=np.ones(10)/10.), res)
+
+ def test_multivariate_normal_size_types(self):
+ # Test for multivariate_normal issue with 'size' argument.
+ # Check that the multivariate_normal size argument can be a
+ # numpy integer.
+ random.multivariate_normal([0], [[0]], size=1)
+ random.multivariate_normal([0], [[0]], size=np.int_(1))
+ random.multivariate_normal([0], [[0]], size=np.int64(1))
+
+ def test_beta_small_parameters(self):
+ # Test that beta with small a and b parameters does not produce
+ # NaNs due to roundoff errors causing 0 / 0, gh-5851
+ random.seed(1234567890)
+ x = random.beta(0.0001, 0.0001, size=100)
+ assert_(not np.any(np.isnan(x)), 'Nans in random.beta')
+
+ def test_choice_sum_of_probs_tolerance(self):
+ # The sum of probs should be 1.0 with some tolerance.
+ # For low precision dtypes the tolerance was too tight.
+ # See numpy github issue 6123.
+ random.seed(1234)
+ a = [1, 2, 3]
+ counts = [4, 4, 2]
+ for dt in np.float16, np.float32, np.float64:
+ probs = np.array(counts, dtype=dt) / sum(counts)
+ c = random.choice(a, p=probs)
+ assert_(c in a)
+ assert_raises(ValueError, random.choice, a, p=probs*0.9)
+
+ def test_shuffle_of_array_of_different_length_strings(self):
+ # Test that permuting an array of different length strings
+ # will not cause a segfault on garbage collection
+ # Tests gh-7710
+ random.seed(1234)
+
+ a = np.array(['a', 'a' * 1000])
+
+ for _ in range(100):
+ random.shuffle(a)
+
+ # Force Garbage Collection - should not segfault.
+ import gc
+ gc.collect()
+
+ def test_shuffle_of_array_of_objects(self):
+ # Test that permuting an array of objects will not cause
+ # a segfault on garbage collection.
+ # See gh-7719
+ random.seed(1234)
+ a = np.array([np.arange(1), np.arange(4)])
+
+ for _ in range(1000):
+ random.shuffle(a)
+
+ # Force Garbage Collection - should not segfault.
+ import gc
+ gc.collect()
+
+ def test_permutation_subclass(self):
+ class N(np.ndarray):
+ pass
+
+ random.seed(1)
+ orig = np.arange(3).view(N)
+ perm = random.permutation(orig)
+ assert_array_equal(perm, np.array([0, 2, 1]))
+ assert_array_equal(orig, np.arange(3).view(N))
+
+ class M(object):
+ a = np.arange(5)
+
+ def __array__(self):
+ return self.a
+
+ random.seed(1)
+ m = M()
+ perm = random.permutation(m)
+ assert_array_equal(perm, np.array([2, 1, 4, 0, 3]))
+ assert_array_equal(m.__array__(), np.arange(5))
diff --git a/numpy/random/tests/test_regression.py b/numpy/random/tests/test_regression.py
index ca9bbbc71..509e2d57f 100644
--- a/numpy/random/tests/test_regression.py
+++ b/numpy/random/tests/test_regression.py
@@ -29,7 +29,8 @@ class TestRegression(object):
]
is_64bits = sys.maxsize > 2**32
if is_64bits and sys.platform != 'win32':
- args.append((2**40 - 2, 2**40 - 2, 2**40 - 2)) # Check for 64-bit systems
+ # Check for 64-bit systems
+ args.append((2**40 - 2, 2**40 - 2, 2**40 - 2))
for arg in args:
assert_(np.random.hypergeometric(*arg) > 0)
diff --git a/numpy/random/tests/test_smoke.py b/numpy/random/tests/test_smoke.py
new file mode 100644
index 000000000..c94e1a285
--- /dev/null
+++ b/numpy/random/tests/test_smoke.py
@@ -0,0 +1,894 @@
+import pickle
+import time
+from functools import partial
+
+import numpy as np
+import pytest
+from numpy.testing import assert_equal, assert_, assert_array_equal
+from numpy.random import (Generator, MT19937, DSFMT, ThreeFry,
+ PCG32, PCG64, Philox, Xoshiro256, Xoshiro512,
+ entropy)
+
+
+@pytest.fixture(scope='module',
+ params=(np.bool, np.int8, np.int16, np.int32, np.int64,
+ np.uint8, np.uint16, np.uint32, np.uint64))
+def dtype(request):
+ return request.param
+
+
+def params_0(f):
+ val = f()
+ assert_(np.isscalar(val))
+ val = f(10)
+ assert_(val.shape == (10,))
+ val = f((10, 10))
+ assert_(val.shape == (10, 10))
+ val = f((10, 10, 10))
+ assert_(val.shape == (10, 10, 10))
+ val = f(size=(5, 5))
+ assert_(val.shape == (5, 5))
+
+
+def params_1(f, bounded=False):
+ a = 5.0
+ b = np.arange(2.0, 12.0)
+ c = np.arange(2.0, 102.0).reshape((10, 10))
+ d = np.arange(2.0, 1002.0).reshape((10, 10, 10))
+ e = np.array([2.0, 3.0])
+ g = np.arange(2.0, 12.0).reshape((1, 10, 1))
+ if bounded:
+ a = 0.5
+ b = b / (1.5 * b.max())
+ c = c / (1.5 * c.max())
+ d = d / (1.5 * d.max())
+ e = e / (1.5 * e.max())
+ g = g / (1.5 * g.max())
+
+ # Scalar
+ f(a)
+ # Scalar - size
+ f(a, size=(10, 10))
+ # 1d
+ f(b)
+ # 2d
+ f(c)
+ # 3d
+ f(d)
+ # 1d size
+ f(b, size=10)
+ # 2d - size - broadcast
+ f(e, size=(10, 2))
+ # 3d - size
+ f(g, size=(10, 10, 10))
+
+
+def comp_state(state1, state2):
+ identical = True
+ if isinstance(state1, dict):
+ for key in state1:
+ identical &= comp_state(state1[key], state2[key])
+ elif type(state1) != type(state2):
+ identical &= type(state1) == type(state2)
+ else:
+ if (isinstance(state1, (list, tuple, np.ndarray)) and isinstance(
+ state2, (list, tuple, np.ndarray))):
+ for s1, s2 in zip(state1, state2):
+ identical &= comp_state(s1, s2)
+ else:
+ identical &= state1 == state2
+ return identical
+
+
+def warmup(rg, n=None):
+ if n is None:
+ n = 11 + np.random.randint(0, 20)
+ rg.standard_normal(n)
+ rg.standard_normal(n)
+ rg.standard_normal(n, dtype=np.float32)
+ rg.standard_normal(n, dtype=np.float32)
+ rg.integers(0, 2 ** 24, n, dtype=np.uint64)
+ rg.integers(0, 2 ** 48, n, dtype=np.uint64)
+ rg.standard_gamma(11.0, n)
+ rg.standard_gamma(11.0, n, dtype=np.float32)
+ rg.random(n, dtype=np.float64)
+ rg.random(n, dtype=np.float32)
+
+
+class RNG(object):
+ @classmethod
+ def setup_class(cls):
+ # Overridden in test classes. Place holder to silence IDE noise
+ cls.bit_generator = Xoshiro256
+ cls.advance = None
+ cls.seed = [12345]
+ cls.rg = Generator(cls.bit_generator(*cls.seed))
+ cls.initial_state = cls.rg.bit_generator.state
+ cls.seed_vector_bits = 64
+ cls._extra_setup()
+
+ @classmethod
+ def _extra_setup(cls):
+ cls.vec_1d = np.arange(2.0, 102.0)
+ cls.vec_2d = np.arange(2.0, 102.0)[None, :]
+ cls.mat = np.arange(2.0, 102.0, 0.01).reshape((100, 100))
+ cls.seed_error = TypeError
+
+ def _reset_state(self):
+ self.rg.bit_generator.state = self.initial_state
+
+ def test_init(self):
+ rg = Generator(self.bit_generator())
+ state = rg.bit_generator.state
+ rg.standard_normal(1)
+ rg.standard_normal(1)
+ rg.bit_generator.state = state
+ new_state = rg.bit_generator.state
+ assert_(comp_state(state, new_state))
+
+ def test_advance(self):
+ state = self.rg.bit_generator.state
+ if hasattr(self.rg.bit_generator, 'advance'):
+ self.rg.bit_generator.advance(self.advance)
+ assert_(not comp_state(state, self.rg.bit_generator.state))
+ else:
+ bitgen_name = self.rg.bit_generator.__class__.__name__
+ pytest.skip('Advance is not supported by {0}'.format(bitgen_name))
+
+ def test_jump(self):
+ state = self.rg.bit_generator.state
+ if hasattr(self.rg.bit_generator, 'jumped'):
+ bit_gen2 = self.rg.bit_generator.jumped()
+ jumped_state = bit_gen2.state
+ assert_(not comp_state(state, jumped_state))
+ self.rg.random(2 * 3 * 5 * 7 * 11 * 13 * 17)
+ self.rg.bit_generator.state = state
+ bit_gen3 = self.rg.bit_generator.jumped()
+ rejumped_state = bit_gen3.state
+ assert_(comp_state(jumped_state, rejumped_state))
+ else:
+ bitgen_name = self.rg.bit_generator.__class__.__name__
+ if bitgen_name not in ('',):
+ raise AttributeError('no "jumped" in %s' % bitgen_name)
+ pytest.skip('Jump is not supported by {0}'.format(bitgen_name))
+
+ def test_uniform(self):
+ r = self.rg.uniform(-1.0, 0.0, size=10)
+ assert_(len(r) == 10)
+ assert_((r > -1).all())
+ assert_((r <= 0).all())
+
+ def test_uniform_array(self):
+ r = self.rg.uniform(np.array([-1.0] * 10), 0.0, size=10)
+ assert_(len(r) == 10)
+ assert_((r > -1).all())
+ assert_((r <= 0).all())
+ r = self.rg.uniform(np.array([-1.0] * 10),
+ np.array([0.0] * 10), size=10)
+ assert_(len(r) == 10)
+ assert_((r > -1).all())
+ assert_((r <= 0).all())
+ r = self.rg.uniform(-1.0, np.array([0.0] * 10), size=10)
+ assert_(len(r) == 10)
+ assert_((r > -1).all())
+ assert_((r <= 0).all())
+
+ def test_random(self):
+ assert_(len(self.rg.random(10)) == 10)
+ params_0(self.rg.random)
+
+ def test_standard_normal_zig(self):
+ assert_(len(self.rg.standard_normal(10)) == 10)
+
+ def test_standard_normal(self):
+ assert_(len(self.rg.standard_normal(10)) == 10)
+ params_0(self.rg.standard_normal)
+
+ def test_standard_gamma(self):
+ assert_(len(self.rg.standard_gamma(10, 10)) == 10)
+ assert_(len(self.rg.standard_gamma(np.array([10] * 10), 10)) == 10)
+ params_1(self.rg.standard_gamma)
+
+ def test_standard_exponential(self):
+ assert_(len(self.rg.standard_exponential(10)) == 10)
+ params_0(self.rg.standard_exponential)
+
+ def test_standard_exponential_float(self):
+ randoms = self.rg.standard_exponential(10, dtype='float32')
+ assert_(len(randoms) == 10)
+ assert randoms.dtype == np.float32
+ params_0(partial(self.rg.standard_exponential, dtype='float32'))
+
+ def test_standard_exponential_float_log(self):
+ randoms = self.rg.standard_exponential(10, dtype='float32',
+ method='inv')
+ assert_(len(randoms) == 10)
+ assert randoms.dtype == np.float32
+ params_0(partial(self.rg.standard_exponential, dtype='float32',
+ method='inv'))
+
+ def test_standard_cauchy(self):
+ assert_(len(self.rg.standard_cauchy(10)) == 10)
+ params_0(self.rg.standard_cauchy)
+
+ def test_standard_t(self):
+ assert_(len(self.rg.standard_t(10, 10)) == 10)
+ params_1(self.rg.standard_t)
+
+ def test_binomial(self):
+ assert_(self.rg.binomial(10, .5) >= 0)
+ assert_(self.rg.binomial(1000, .5) >= 0)
+
+ def test_reset_state(self):
+ state = self.rg.bit_generator.state
+ int_1 = self.rg.integers(2**31)
+ self.rg.bit_generator.state = state
+ int_2 = self.rg.integers(2**31)
+ assert_(int_1 == int_2)
+
+ def test_entropy_init(self):
+ rg = Generator(self.bit_generator())
+ rg2 = Generator(self.bit_generator())
+ assert_(not comp_state(rg.bit_generator.state,
+ rg2.bit_generator.state))
+
+ def test_seed(self):
+ rg = Generator(self.bit_generator(*self.seed))
+ rg2 = Generator(self.bit_generator(*self.seed))
+ rg.random()
+ rg2.random()
+ assert_(comp_state(rg.bit_generator.state, rg2.bit_generator.state))
+
+ def test_reset_state_gauss(self):
+ rg = Generator(self.bit_generator(*self.seed))
+ rg.standard_normal()
+ state = rg.bit_generator.state
+ n1 = rg.standard_normal(size=10)
+ rg2 = Generator(self.bit_generator())
+ rg2.bit_generator.state = state
+ n2 = rg2.standard_normal(size=10)
+ assert_array_equal(n1, n2)
+
+ def test_reset_state_uint32(self):
+ rg = Generator(self.bit_generator(*self.seed))
+ rg.integers(0, 2 ** 24, 120, dtype=np.uint32)
+ state = rg.bit_generator.state
+ n1 = rg.integers(0, 2 ** 24, 10, dtype=np.uint32)
+ rg2 = Generator(self.bit_generator())
+ rg2.bit_generator.state = state
+ n2 = rg2.integers(0, 2 ** 24, 10, dtype=np.uint32)
+ assert_array_equal(n1, n2)
+
+ def test_reset_state_float(self):
+ rg = Generator(self.bit_generator(*self.seed))
+ rg.random(dtype='float32')
+ state = rg.bit_generator.state
+ n1 = rg.random(size=10, dtype='float32')
+ rg2 = Generator(self.bit_generator())
+ rg2.bit_generator.state = state
+ n2 = rg2.random(size=10, dtype='float32')
+ assert_((n1 == n2).all())
+
+ def test_shuffle(self):
+ original = np.arange(200, 0, -1)
+ permuted = self.rg.permutation(original)
+ assert_((original != permuted).any())
+
+ def test_permutation(self):
+ original = np.arange(200, 0, -1)
+ permuted = self.rg.permutation(original)
+ assert_((original != permuted).any())
+
+ def test_beta(self):
+ vals = self.rg.beta(2.0, 2.0, 10)
+ assert_(len(vals) == 10)
+ vals = self.rg.beta(np.array([2.0] * 10), 2.0)
+ assert_(len(vals) == 10)
+ vals = self.rg.beta(2.0, np.array([2.0] * 10))
+ assert_(len(vals) == 10)
+ vals = self.rg.beta(np.array([2.0] * 10), np.array([2.0] * 10))
+ assert_(len(vals) == 10)
+ vals = self.rg.beta(np.array([2.0] * 10), np.array([[2.0]] * 10))
+ assert_(vals.shape == (10, 10))
+
+ def test_bytes(self):
+ vals = self.rg.bytes(10)
+ assert_(len(vals) == 10)
+
+ def test_chisquare(self):
+ vals = self.rg.chisquare(2.0, 10)
+ assert_(len(vals) == 10)
+ params_1(self.rg.chisquare)
+
+ def test_exponential(self):
+ vals = self.rg.exponential(2.0, 10)
+ assert_(len(vals) == 10)
+ params_1(self.rg.exponential)
+
+ def test_f(self):
+ vals = self.rg.f(3, 1000, 10)
+ assert_(len(vals) == 10)
+
+ def test_gamma(self):
+ vals = self.rg.gamma(3, 2, 10)
+ assert_(len(vals) == 10)
+
+ def test_geometric(self):
+ vals = self.rg.geometric(0.5, 10)
+ assert_(len(vals) == 10)
+ params_1(self.rg.exponential, bounded=True)
+
+ def test_gumbel(self):
+ vals = self.rg.gumbel(2.0, 2.0, 10)
+ assert_(len(vals) == 10)
+
+ def test_laplace(self):
+ vals = self.rg.laplace(2.0, 2.0, 10)
+ assert_(len(vals) == 10)
+
+ def test_logitic(self):
+ vals = self.rg.logistic(2.0, 2.0, 10)
+ assert_(len(vals) == 10)
+
+ def test_logseries(self):
+ vals = self.rg.logseries(0.5, 10)
+ assert_(len(vals) == 10)
+
+ def test_negative_binomial(self):
+ vals = self.rg.negative_binomial(10, 0.2, 10)
+ assert_(len(vals) == 10)
+
+ def test_noncentral_chisquare(self):
+ vals = self.rg.noncentral_chisquare(10, 2, 10)
+ assert_(len(vals) == 10)
+
+ def test_noncentral_f(self):
+ vals = self.rg.noncentral_f(3, 1000, 2, 10)
+ assert_(len(vals) == 10)
+ vals = self.rg.noncentral_f(np.array([3] * 10), 1000, 2)
+ assert_(len(vals) == 10)
+ vals = self.rg.noncentral_f(3, np.array([1000] * 10), 2)
+ assert_(len(vals) == 10)
+ vals = self.rg.noncentral_f(3, 1000, np.array([2] * 10))
+ assert_(len(vals) == 10)
+
+ def test_normal(self):
+ vals = self.rg.normal(10, 0.2, 10)
+ assert_(len(vals) == 10)
+
+ def test_pareto(self):
+ vals = self.rg.pareto(3.0, 10)
+ assert_(len(vals) == 10)
+
+ def test_poisson(self):
+ vals = self.rg.poisson(10, 10)
+ assert_(len(vals) == 10)
+ vals = self.rg.poisson(np.array([10] * 10))
+ assert_(len(vals) == 10)
+ params_1(self.rg.poisson)
+
+ def test_power(self):
+ vals = self.rg.power(0.2, 10)
+ assert_(len(vals) == 10)
+
+ def test_integers(self):
+ vals = self.rg.integers(10, 20, 10)
+ assert_(len(vals) == 10)
+
+ def test_rayleigh(self):
+ vals = self.rg.rayleigh(0.2, 10)
+ assert_(len(vals) == 10)
+ params_1(self.rg.rayleigh, bounded=True)
+
+ def test_vonmises(self):
+ vals = self.rg.vonmises(10, 0.2, 10)
+ assert_(len(vals) == 10)
+
+ def test_wald(self):
+ vals = self.rg.wald(1.0, 1.0, 10)
+ assert_(len(vals) == 10)
+
+ def test_weibull(self):
+ vals = self.rg.weibull(1.0, 10)
+ assert_(len(vals) == 10)
+
+ def test_zipf(self):
+ vals = self.rg.zipf(10, 10)
+ assert_(len(vals) == 10)
+ vals = self.rg.zipf(self.vec_1d)
+ assert_(len(vals) == 100)
+ vals = self.rg.zipf(self.vec_2d)
+ assert_(vals.shape == (1, 100))
+ vals = self.rg.zipf(self.mat)
+ assert_(vals.shape == (100, 100))
+
+ def test_hypergeometric(self):
+ vals = self.rg.hypergeometric(25, 25, 20)
+ assert_(np.isscalar(vals))
+ vals = self.rg.hypergeometric(np.array([25] * 10), 25, 20)
+ assert_(vals.shape == (10,))
+
+ def test_triangular(self):
+ vals = self.rg.triangular(-5, 0, 5)
+ assert_(np.isscalar(vals))
+ vals = self.rg.triangular(-5, np.array([0] * 10), 5)
+ assert_(vals.shape == (10,))
+
+ def test_multivariate_normal(self):
+ mean = [0, 0]
+ cov = [[1, 0], [0, 100]] # diagonal covariance
+ x = self.rg.multivariate_normal(mean, cov, 5000)
+ assert_(x.shape == (5000, 2))
+ x_zig = self.rg.multivariate_normal(mean, cov, 5000)
+ assert_(x.shape == (5000, 2))
+ x_inv = self.rg.multivariate_normal(mean, cov, 5000)
+ assert_(x.shape == (5000, 2))
+ assert_((x_zig != x_inv).any())
+
+ def test_multinomial(self):
+ vals = self.rg.multinomial(100, [1.0 / 3, 2.0 / 3])
+ assert_(vals.shape == (2,))
+ vals = self.rg.multinomial(100, [1.0 / 3, 2.0 / 3], size=10)
+ assert_(vals.shape == (10, 2))
+
+ def test_dirichlet(self):
+ s = self.rg.dirichlet((10, 5, 3), 20)
+ assert_(s.shape == (20, 3))
+
+ def test_pickle(self):
+ pick = pickle.dumps(self.rg)
+ unpick = pickle.loads(pick)
+ assert_((type(self.rg) == type(unpick)))
+ assert_(comp_state(self.rg.bit_generator.state,
+ unpick.bit_generator.state))
+
+ pick = pickle.dumps(self.rg)
+ unpick = pickle.loads(pick)
+ assert_((type(self.rg) == type(unpick)))
+ assert_(comp_state(self.rg.bit_generator.state,
+ unpick.bit_generator.state))
+
+ def test_seed_array(self):
+ if self.seed_vector_bits is None:
+ bitgen_name = self.bit_generator.__name__
+ pytest.skip('Vector seeding is not supported by '
+ '{0}'.format(bitgen_name))
+
+ if self.seed_vector_bits == 32:
+ dtype = np.uint32
+ else:
+ dtype = np.uint64
+ seed = np.array([1], dtype=dtype)
+ self.rg.bit_generator.seed(seed)
+ state1 = self.rg.bit_generator.state
+ self.rg.bit_generator.seed(1)
+ state2 = self.rg.bit_generator.state
+ assert_(comp_state(state1, state2))
+
+ seed = np.arange(4, dtype=dtype)
+ self.rg.bit_generator.seed(seed)
+ state1 = self.rg.bit_generator.state
+ self.rg.bit_generator.seed(seed[0])
+ state2 = self.rg.bit_generator.state
+ assert_(not comp_state(state1, state2))
+
+ seed = np.arange(1500, dtype=dtype)
+ self.rg.bit_generator.seed(seed)
+ state1 = self.rg.bit_generator.state
+ self.rg.bit_generator.seed(seed[0])
+ state2 = self.rg.bit_generator.state
+ assert_(not comp_state(state1, state2))
+
+ seed = 2 ** np.mod(np.arange(1500, dtype=dtype),
+ self.seed_vector_bits - 1) + 1
+ self.rg.bit_generator.seed(seed)
+ state1 = self.rg.bit_generator.state
+ self.rg.bit_generator.seed(seed[0])
+ state2 = self.rg.bit_generator.state
+ assert_(not comp_state(state1, state2))
+
+ def test_seed_array_error(self):
+ if self.seed_vector_bits == 32:
+ out_of_bounds = 2 ** 32
+ else:
+ out_of_bounds = 2 ** 64
+
+ seed = -1
+ with pytest.raises(ValueError):
+ self.rg.bit_generator.seed(seed)
+
+ seed = np.array([-1], dtype=np.int32)
+ with pytest.raises(ValueError):
+ self.rg.bit_generator.seed(seed)
+
+ seed = np.array([1, 2, 3, -5], dtype=np.int32)
+ with pytest.raises(ValueError):
+ self.rg.bit_generator.seed(seed)
+
+ seed = np.array([1, 2, 3, out_of_bounds])
+ with pytest.raises(ValueError):
+ self.rg.bit_generator.seed(seed)
+
+ def test_uniform_float(self):
+ rg = Generator(self.bit_generator(12345))
+ warmup(rg)
+ state = rg.bit_generator.state
+ r1 = rg.random(11, dtype=np.float32)
+ rg2 = Generator(self.bit_generator())
+ warmup(rg2)
+ rg2.bit_generator.state = state
+ r2 = rg2.random(11, dtype=np.float32)
+ assert_array_equal(r1, r2)
+ assert_equal(r1.dtype, np.float32)
+ assert_(comp_state(rg.bit_generator.state, rg2.bit_generator.state))
+
+ def test_gamma_floats(self):
+ rg = Generator(self.bit_generator())
+ warmup(rg)
+ state = rg.bit_generator.state
+ r1 = rg.standard_gamma(4.0, 11, dtype=np.float32)
+ rg2 = Generator(self.bit_generator())
+ warmup(rg2)
+ rg2.bit_generator.state = state
+ r2 = rg2.standard_gamma(4.0, 11, dtype=np.float32)
+ assert_array_equal(r1, r2)
+ assert_equal(r1.dtype, np.float32)
+ assert_(comp_state(rg.bit_generator.state, rg2.bit_generator.state))
+
+ def test_normal_floats(self):
+ rg = Generator(self.bit_generator())
+ warmup(rg)
+ state = rg.bit_generator.state
+ r1 = rg.standard_normal(11, dtype=np.float32)
+ rg2 = Generator(self.bit_generator())
+ warmup(rg2)
+ rg2.bit_generator.state = state
+ r2 = rg2.standard_normal(11, dtype=np.float32)
+ assert_array_equal(r1, r2)
+ assert_equal(r1.dtype, np.float32)
+ assert_(comp_state(rg.bit_generator.state, rg2.bit_generator.state))
+
+ def test_normal_zig_floats(self):
+ rg = Generator(self.bit_generator())
+ warmup(rg)
+ state = rg.bit_generator.state
+ r1 = rg.standard_normal(11, dtype=np.float32)
+ rg2 = Generator(self.bit_generator())
+ warmup(rg2)
+ rg2.bit_generator.state = state
+ r2 = rg2.standard_normal(11, dtype=np.float32)
+ assert_array_equal(r1, r2)
+ assert_equal(r1.dtype, np.float32)
+ assert_(comp_state(rg.bit_generator.state, rg2.bit_generator.state))
+
+ def test_output_fill(self):
+ rg = self.rg
+ state = rg.bit_generator.state
+ size = (31, 7, 97)
+ existing = np.empty(size)
+ rg.bit_generator.state = state
+ rg.standard_normal(out=existing)
+ rg.bit_generator.state = state
+ direct = rg.standard_normal(size=size)
+ assert_equal(direct, existing)
+
+ sized = np.empty(size)
+ rg.bit_generator.state = state
+ rg.standard_normal(out=sized, size=sized.shape)
+
+ existing = np.empty(size, dtype=np.float32)
+ rg.bit_generator.state = state
+ rg.standard_normal(out=existing, dtype=np.float32)
+ rg.bit_generator.state = state
+ direct = rg.standard_normal(size=size, dtype=np.float32)
+ assert_equal(direct, existing)
+
+ def test_output_filling_uniform(self):
+ rg = self.rg
+ state = rg.bit_generator.state
+ size = (31, 7, 97)
+ existing = np.empty(size)
+ rg.bit_generator.state = state
+ rg.random(out=existing)
+ rg.bit_generator.state = state
+ direct = rg.random(size=size)
+ assert_equal(direct, existing)
+
+ existing = np.empty(size, dtype=np.float32)
+ rg.bit_generator.state = state
+ rg.random(out=existing, dtype=np.float32)
+ rg.bit_generator.state = state
+ direct = rg.random(size=size, dtype=np.float32)
+ assert_equal(direct, existing)
+
+ def test_output_filling_exponential(self):
+ rg = self.rg
+ state = rg.bit_generator.state
+ size = (31, 7, 97)
+ existing = np.empty(size)
+ rg.bit_generator.state = state
+ rg.standard_exponential(out=existing)
+ rg.bit_generator.state = state
+ direct = rg.standard_exponential(size=size)
+ assert_equal(direct, existing)
+
+ existing = np.empty(size, dtype=np.float32)
+ rg.bit_generator.state = state
+ rg.standard_exponential(out=existing, dtype=np.float32)
+ rg.bit_generator.state = state
+ direct = rg.standard_exponential(size=size, dtype=np.float32)
+ assert_equal(direct, existing)
+
+ def test_output_filling_gamma(self):
+ rg = self.rg
+ state = rg.bit_generator.state
+ size = (31, 7, 97)
+ existing = np.zeros(size)
+ rg.bit_generator.state = state
+ rg.standard_gamma(1.0, out=existing)
+ rg.bit_generator.state = state
+ direct = rg.standard_gamma(1.0, size=size)
+ assert_equal(direct, existing)
+
+ existing = np.zeros(size, dtype=np.float32)
+ rg.bit_generator.state = state
+ rg.standard_gamma(1.0, out=existing, dtype=np.float32)
+ rg.bit_generator.state = state
+ direct = rg.standard_gamma(1.0, size=size, dtype=np.float32)
+ assert_equal(direct, existing)
+
+ def test_output_filling_gamma_broadcast(self):
+ rg = self.rg
+ state = rg.bit_generator.state
+ size = (31, 7, 97)
+ mu = np.arange(97.0) + 1.0
+ existing = np.zeros(size)
+ rg.bit_generator.state = state
+ rg.standard_gamma(mu, out=existing)
+ rg.bit_generator.state = state
+ direct = rg.standard_gamma(mu, size=size)
+ assert_equal(direct, existing)
+
+ existing = np.zeros(size, dtype=np.float32)
+ rg.bit_generator.state = state
+ rg.standard_gamma(mu, out=existing, dtype=np.float32)
+ rg.bit_generator.state = state
+ direct = rg.standard_gamma(mu, size=size, dtype=np.float32)
+ assert_equal(direct, existing)
+
+ def test_output_fill_error(self):
+ rg = self.rg
+ size = (31, 7, 97)
+ existing = np.empty(size)
+ with pytest.raises(TypeError):
+ rg.standard_normal(out=existing, dtype=np.float32)
+ with pytest.raises(ValueError):
+ rg.standard_normal(out=existing[::3])
+ existing = np.empty(size, dtype=np.float32)
+ with pytest.raises(TypeError):
+ rg.standard_normal(out=existing, dtype=np.float64)
+
+ existing = np.zeros(size, dtype=np.float32)
+ with pytest.raises(TypeError):
+ rg.standard_gamma(1.0, out=existing, dtype=np.float64)
+ with pytest.raises(ValueError):
+ rg.standard_gamma(1.0, out=existing[::3], dtype=np.float32)
+ existing = np.zeros(size, dtype=np.float64)
+ with pytest.raises(TypeError):
+ rg.standard_gamma(1.0, out=existing, dtype=np.float32)
+ with pytest.raises(ValueError):
+ rg.standard_gamma(1.0, out=existing[::3])
+
+ def test_integers_broadcast(self, dtype):
+ if dtype == np.bool:
+ upper = 2
+ lower = 0
+ else:
+ info = np.iinfo(dtype)
+ upper = int(info.max) + 1
+ lower = info.min
+ self._reset_state()
+ a = self.rg.integers(lower, [upper] * 10, dtype=dtype)
+ self._reset_state()
+ b = self.rg.integers([lower] * 10, upper, dtype=dtype)
+ assert_equal(a, b)
+ self._reset_state()
+ c = self.rg.integers(lower, upper, size=10, dtype=dtype)
+ assert_equal(a, c)
+ self._reset_state()
+ d = self.rg.integers(np.array(
+ [lower] * 10), np.array([upper], dtype=np.object), size=10,
+ dtype=dtype)
+ assert_equal(a, d)
+ self._reset_state()
+ e = self.rg.integers(
+ np.array([lower] * 10), np.array([upper] * 10), size=10,
+ dtype=dtype)
+ assert_equal(a, e)
+
+ self._reset_state()
+ a = self.rg.integers(0, upper, size=10, dtype=dtype)
+ self._reset_state()
+ b = self.rg.integers([upper] * 10, dtype=dtype)
+ assert_equal(a, b)
+
+ def test_integers_numpy(self, dtype):
+ high = np.array([1])
+ low = np.array([0])
+
+ out = self.rg.integers(low, high, dtype=dtype)
+ assert out.shape == (1,)
+
+ out = self.rg.integers(low[0], high, dtype=dtype)
+ assert out.shape == (1,)
+
+ out = self.rg.integers(low, high[0], dtype=dtype)
+ assert out.shape == (1,)
+
+ def test_integers_broadcast_errors(self, dtype):
+ if dtype == np.bool:
+ upper = 2
+ lower = 0
+ else:
+ info = np.iinfo(dtype)
+ upper = int(info.max) + 1
+ lower = info.min
+ with pytest.raises(ValueError):
+ self.rg.integers(lower, [upper + 1] * 10, dtype=dtype)
+ with pytest.raises(ValueError):
+ self.rg.integers(lower - 1, [upper] * 10, dtype=dtype)
+ with pytest.raises(ValueError):
+ self.rg.integers([lower - 1], [upper] * 10, dtype=dtype)
+ with pytest.raises(ValueError):
+ self.rg.integers([0], [0], dtype=dtype)
+
+
+class TestMT19937(RNG):
+ @classmethod
+ def setup_class(cls):
+ cls.bit_generator = MT19937
+ cls.advance = None
+ cls.seed = [2 ** 21 + 2 ** 16 + 2 ** 5 + 1]
+ cls.rg = Generator(cls.bit_generator(*cls.seed))
+ cls.initial_state = cls.rg.bit_generator.state
+ cls.seed_vector_bits = 32
+ cls._extra_setup()
+ cls.seed_error = ValueError
+
+ def test_numpy_state(self):
+ nprg = np.random.RandomState()
+ nprg.standard_normal(99)
+ state = nprg.get_state()
+ self.rg.bit_generator.state = state
+ state2 = self.rg.bit_generator.state
+ assert_((state[1] == state2['state']['key']).all())
+ assert_((state[2] == state2['state']['pos']))
+
+
+class TestPhilox(RNG):
+ @classmethod
+ def setup_class(cls):
+ cls.bit_generator = Philox
+ cls.advance = 2**63 + 2**31 + 2**15 + 1
+ cls.seed = [12345]
+ cls.rg = Generator(cls.bit_generator(*cls.seed))
+ cls.initial_state = cls.rg.bit_generator.state
+ cls.seed_vector_bits = 64
+ cls._extra_setup()
+
+
+class TestThreeFry(RNG):
+ @classmethod
+ def setup_class(cls):
+ cls.bit_generator = ThreeFry
+ cls.advance = 2 ** 63 + 2 ** 31 + 2 ** 15 + 1
+ cls.seed = [12345]
+ cls.rg = Generator(cls.bit_generator(*cls.seed))
+ cls.initial_state = cls.rg.bit_generator.state
+ cls.seed_vector_bits = 64
+ cls._extra_setup()
+
+
+class TestXoshiro256(RNG):
+ @classmethod
+ def setup_class(cls):
+ cls.bit_generator = Xoshiro256
+ cls.advance = None
+ cls.seed = [12345]
+ cls.rg = Generator(cls.bit_generator(*cls.seed))
+ cls.initial_state = cls.rg.bit_generator.state
+ cls.seed_vector_bits = 64
+ cls._extra_setup()
+
+
+class TestXoshiro512(RNG):
+ @classmethod
+ def setup_class(cls):
+ cls.bit_generator = Xoshiro512
+ cls.advance = None
+ cls.seed = [12345]
+ cls.rg = Generator(cls.bit_generator(*cls.seed))
+ cls.initial_state = cls.rg.bit_generator.state
+ cls.seed_vector_bits = 64
+ cls._extra_setup()
+
+
+class TestDSFMT(RNG):
+ @classmethod
+ def setup_class(cls):
+ cls.bit_generator = DSFMT
+ cls.advance = None
+ cls.seed = [12345]
+ cls.rg = Generator(cls.bit_generator(*cls.seed))
+ cls.initial_state = cls.rg.bit_generator.state
+ cls._extra_setup()
+ cls.seed_vector_bits = 32
+
+
+class TestEntropy(object):
+ def test_entropy(self):
+ e1 = entropy.random_entropy()
+ e2 = entropy.random_entropy()
+ assert_((e1 != e2))
+ e1 = entropy.random_entropy(10)
+ e2 = entropy.random_entropy(10)
+ assert_((e1 != e2).all())
+ e1 = entropy.random_entropy(10, source='system')
+ e2 = entropy.random_entropy(10, source='system')
+ assert_((e1 != e2).all())
+
+ def test_fallback(self):
+ e1 = entropy.random_entropy(source='fallback')
+ time.sleep(0.1)
+ e2 = entropy.random_entropy(source='fallback')
+ assert_((e1 != e2))
+
+
+class TestPCG64(RNG):
+ @classmethod
+ def setup_class(cls):
+ cls.bit_generator = PCG64
+ cls.advance = 2 ** 96 + 2 ** 48 + 2 ** 21 + 2 ** 16 + 2 ** 5 + 1
+ cls.seed = [2 ** 96 + 2 ** 48 + 2 ** 21 + 2 ** 16 + 2 ** 5 + 1,
+ 2 ** 21 + 2 ** 16 + 2 ** 5 + 1]
+ cls.rg = Generator(cls.bit_generator(*cls.seed))
+ cls.initial_state = cls.rg.bit_generator.state
+ cls.seed_vector_bits = None
+ cls._extra_setup()
+
+ def test_seed_array_error(self):
+ # GH #82 for error type changes
+ if self.seed_vector_bits == 32:
+ out_of_bounds = 2 ** 32
+ else:
+ out_of_bounds = 2 ** 64
+
+ seed = -1
+ with pytest.raises(ValueError):
+ self.rg.bit_generator.seed(seed)
+
+ error_type = ValueError if self.seed_vector_bits else TypeError
+ seed = np.array([-1], dtype=np.int32)
+ with pytest.raises(error_type):
+ self.rg.bit_generator.seed(seed)
+
+ seed = np.array([1, 2, 3, -5], dtype=np.int32)
+ with pytest.raises(error_type):
+ self.rg.bit_generator.seed(seed)
+
+ seed = np.array([1, 2, 3, out_of_bounds])
+ with pytest.raises(error_type):
+ self.rg.bit_generator.seed(seed)
+
+
+class TestPCG32(TestPCG64):
+ @classmethod
+ def setup_class(cls):
+ cls.bit_generator = PCG32
+ cls.advance = 2 ** 48 + 2 ** 21 + 2 ** 16 + 2 ** 5 + 1
+ cls.seed = [2 ** 48 + 2 ** 21 + 2 ** 16 + 2 ** 5 + 1,
+ 2 ** 21 + 2 ** 16 + 2 ** 5 + 1]
+ cls.rg = Generator(cls.bit_generator(*cls.seed))
+ cls.initial_state = cls.rg.bit_generator.state
+ cls.seed_vector_bits = None
+ cls._extra_setup()