o 6aA@@sddlZddlmZddlZddlZddlmZmZm Z m Z ddl Z ddl m Z mZmZmZmZmZmZmZmZddlmZzddlZdZWn eyQdZYnwzddlZdZWn eyedZYnwejjdkrndZej ej!e"Z#d d Z$d d Z%d dZ&ddZ'ddZ(ddZ)ddZ*ddZ+ddZ,ddZ-ddZ.Gdd d Z/Gd!d"d"e/Z0Gd#d$d$e/Z1Gd%d&d&e/Z2Gd'd(d(e/Z3Gd)d*d*e/Z4Gd+d,d,Z5dS)-N)join) assert_equalassert_allcloseassert_array_equal assert_raises) GeneratorMT19937PCG64 PCG64DXSMPhilox RandomState SeedSequenceSFC64 default_rng) interfaceFTcCsh|D]/}t||trt||||qt||tjr't||||q||||ks1JqdSN) isinstancedictassert_state_equalnpndarrayr)actualtargetkeyr@/usr/lib/python3/dist-packages/numpy/random/tests/test_direct.pyr'srcCsrt|}tj|td?tjd}td}tj||@tjd}t||g}|td?d}|tjS)N dtype >)ruint64arrayuint32 column_stackravelastypefloat32)xupperlowerjoinedoutrrruniform32_from_uint641s   r/cCsFt|td?}t|td@}|td?d}|tjS)Nr r!r")rr#r%r(r))r*r.rrruniform32_from_uint53;s r1cC|td?dS)Nr!r")rr%r*rrruniform32_from_uint32Br4cCs4|dkrt|S|dkrt|S|dkrt|St)N@5r)r/r1r4NotImplementedErrorr*bitsrrruniform32_from_uintFsr;cCs$|dvrt|S|dkrt|SdS)N)r6?r7r)uniform_from_uint64uniform_from_uint32r9rrruniform_from_uintQs r?cCr2)N g<)rr#r3rrrr=Xr5r=cCs`tt|d}tdt|dD]}||d?}||dd?}|d|d||d<q|S)NrrgAg@C)remptylenrange)r*r.iabrrrr>\s  r>cCs|tjdS)N?)viewrdoubler3rrruniform_from_dsfmtesrMc Cs|dvr t|}n |dkrt|}nt|}g}d}d}}t||krtd}|dks.|dkrTd||d}d||dd}||||}|d7}|dks.|dks.td t||} || ||| |t||ks$|d|S) N)r6r<rrrArJg@rg)r=r>rMrErsqrtlogappend) r*nr:doublesgausslocx1x2r2frrrgauss_from_uintis*    rZcCsddlm}m}m}ttdddd}|dtdi|j}t|j|jt|j |j t t |t t ||}t t |j dt|ddksMJdS)Nr) ISeedSequenceISpawnableSeedSequenceSeedlessSeedSequence )rrArC) spawn_key pool_sizer)numpy.random.bit_generatorr[r\r]r rFspawnstatern_children_spawnedr TypeErrorr8generate_staterE)r[r\r]s1s2dummyrrrtest_seedsequences   rjc@seZdZejZiZZeddZ eddZ ddZ ddZ d d Z d d Zd dZddZddZddZddZddZddZddZddZejjedd d!d"Zejjed#d d$d%Zd&d'Zd(S))BasecCs*t|_d|_tj|_t|_g|_g|_ dS)Nr6) r bit_generatorr:rr#rreseed_error_typeinvalid_init_typesinvalid_init_valuesclsrrr setup_classs  zBase.setup_classcCst|=}|}|d}dd|ddD}g}|D]}|t|dddq|tj||jddWdS1sDwYdS) N,cSsg|] }t|dqS)r)intstrip).0srrr sz"Base._read_csv..rrr)seeddata) openreadlinesplitrQrtrurr$r)rqfilenamecsvrzr{linerrr _read_csvs   $zBase._read_csvcCs|j|jd}|d}t||jd|j|jd}|}t||jdd|j|jd}|d}t||jddS)Nrzr{r)rldata1 random_rawrdata2selfrluintsrrrtest_raws  z Base.test_rawcCsF|j|jd}|jdd}|dusJ|jddd}|dus!JdS)NrzF)outputr)rlrrrrrrtest_random_raws   zBase.test_random_rawcCsxd}t|j|jd}||}t|t|jd||jt|j|jd}|d}t|t|jd||jdS)Nrzr{)r rlrstandard_normalrrZr:r)rrRrsrTrrrtest_gauss_invs  zBase.test_gauss_invcCst|j|jd}t|jd|j}|t|}t||t|j t j t|j|j d}t|j d|j}|t|}t||t|j t j dS)Nrzr{) rrlrr?r:randomrErrrrfloat64rrrvalsuniformsrrrtest_uniform_doubles  zBase.test_uniform_doublecCst|j|jd}t|jd|j}|jt|tjd}t ||t |j tjt|j|j d}t|j d|j}|jt|tjd}t ||t |j tjdS)Nrzr{r) rrlrr;r:rrErr)rrrrrrrrtest_uniform_floats  zBase.test_uniform_floatcCsLt|j|jd}dt|vsJt|dddt|vs$JdSNrzrz#xXr*)rrlrrepridr+replacerrrrr test_reprs(zBase.test_reprcCsdt|j|jd}dt|vsJt|jjt|vsJt|dddt|vs0JdSr)rrlrstr__name__rr+rrrrrtest_strs(z Base.test_strc Csddl}|j|jd}|j}||}||}|j}tt|dt|d||us1Jt ||t d}|||}t |j|jdS)Nrrzrd) picklerlrrcdumpsloadsrrrrr r) rrrlrc bitgen_pklreloadedreloaded_statessaarrr test_pickles     zBase.test_picklecCsH|j|jd}tt dh|_WddS1swYdS)Nrz1)rlrpytestraisesrercrrlrrrtest_invalid_state_types  "zBase.test_invalid_state_typecCsT|j|jd}|j}d|d<tt ||_WddS1s#wYdS)NrzotherBitGeneratorrl)rlrrcrr ValueError)rrlrcrrrtest_invalid_state_values  "zBase.test_invalid_state_valuec CsH|j}|jD]}tt ||Wdn1swYqdSr)rlrnrrrerrlstrrrtest_invalid_init_types   zBase.test_invalid_init_typec CsL|j}|jD]}tttf ||Wdn1swYqdSr)rlrorrr OverflowErrorrrrrtest_invalid_init_valuess  zBase.test_invalid_init_valuescCsb|j|jd}|d|ddtt|ddWddS1s*wYdS)NrzrrLint32)rlr _benchmarkrrrrrrrtest_benchmarks    "zBase.test_benchmarkzcffi not available)reasoncC:|j|jd}|j}t|tsJ|j}||usJdSNrz)rlrcffirr)rrlcffi_interfaceother_cffi_interfacerrr test_cffi! zBase.test_cffizctypes not availablecCrr)rlrctypesrr)rrlctypes_interfaceother_ctypes_interfacerrr test_ctypes)rzBase.test_ctypescCs,|j|jd}|j}|}t||dSr)rlrrc __getstate__r)rrlrc alt_staterrr test_getstate1szBase.test_getstateN) r __module__ __qualname__rr#rrr classmethodrrrrrrrrrrrrrrrrrmarkskipif MISSING_CFFIrMISSING_CTYPESrrrrrrrks2          rkc@s eZdZeddZddZdS) TestPhiloxcCsbt|_d|_tj|_|ttd|_ |ttd|_ t |_ g|_ dddddddfg|_dS) Nr6z./data/philox-testset-1.csvz./data/philox-testset-2.csv)rNrryrAir)r rlr:rr#rrrpwdrrrermrnrorprrrrr9szTestPhilox.setup_classcCsF|j|jd}|j}|j|dd|ddd}t|j|jdS)Nrzrccounterr)rr)rlrrcr)rrlrckeyedrrr test_set_keyFs  zTestPhilox.test_set_keyN)rrrrrrrrrrrr8s  rc@(eZdZeddZddZddZdS) TestPCG64cC^t|_d|_tj|_|ttd|_ |ttd|_ t t f|_ ddgfdg|_dg|_dS)Nr6z./data/pcg64-testset-1.csvz./data/pcg64-testset-2.csvg @rNr)r rlr:rr#rrrrrrrrermrnrorprrrrrO  zTestPCG64.setup_classcCt|j|jd}|jj}d}|j||d}||j_|jdd||d}||j_|jddd||d}||ksIJ||ksOJdSNrzlPAOi_nr^rArrlrrcadvanceintegersrrrcstepval_negval_posval_bigrrrtest_advance_symmetryZ     zTestPCG64.test_advance_symmetrycCslt|d}|j}|jd}d}|d|ksJ|tdddD|jd}d}|d|ks4JdS)N%@ rc r%4= Kvu1/cs|]}d|VqdSrANrrvrGrrr oz/TestPCG64.test_advange_large..`r6rr0rArl @H}.|zKLfberrlrcrsumrrpcgrc initial_stateadvanced_staterrrtest_advange_largeis  zTestPCG64.test_advange_largeNrrrrrrrrrrrrrN   rc@r) TestPCG64DXSMcCr)Nr6z./data/pcg64dxsm-testset-1.csvz./data/pcg64dxsm-testset-2.csvrrr)r rlr:rr#rrrrrrrrermrnrorprrrrrvrzTestPCG64DXSM.setup_classcCrrrrrrrrrz#TestPCG64DXSM.test_advance_symmetrycCslt|d}|j}|j}d}|dd|ksJ|tdddD|jd}d}|d|ks4JdS)Nrrrccsrrrrrrrrrz3TestPCG64DXSM.test_advange_large..rl oF [UmO1X9}rrrrrrs z TestPCG64DXSM.test_advange_largeNrrrrrrurrc@r) TestMT19937cCsPt|_d|_tj|_|ttd|_ |ttd|_ t |_ g|_ dg|_dS)Nrz./data/mt19937-testset-1.csvz./data/mt19937-testset-2.csvr)rrlr:rr%rrrrrrrrmrnrorprrrrrs zTestMT19937.setup_classcCstt|jttjgtt|jttj gtt|jttjtj gtt|jtdtjgtt|jtjgtt|jdtjgdS)Nr)rrerlrr$pi)rrrrtest_seed_float_arrays z!TestMT19937.test_seed_float_arraycCst|j|jd}|j}|j}|d}|d|dd|ddf}||_|d}t|||d}||_|d}t||dS)Nrzirlrcrpos)rrN)rrlrrcrr)rrrlrcdesiredtuprrrrtest_state_tuples     zTestMT19937.test_state_tupleN)rrrrrrrrrrrrrs   rc@seZdZeddZdS) TestSFC64cCr)Nr6z./data/sfc64-testset-1.csvz./data/sfc64-testset-2.csvrrr)rrlr:rr#rrrrrrrrermrnrorprrrrrs  zTestSFC64.setup_classN)rrrrrrrrrrrsrc@seZdZddZddZdS)TestDefaultRNGcCs4dddddgffD]}t|}t|jtsJq dS)Nrr)r i.)rrrlr )rargsrgrrr test_seedszTestDefaultRNG.test_seedcCsBt}t|}|j|usJt|}||usJ|j|usJdSr)r rrl)rbgr rg2rrrtest_passthroughs  zTestDefaultRNG.test_passthroughN)rrrr rrrrrrs r)6osos.pathrsysnumpyr numpy.testingrrrrr numpy.randomrrr r r r r rrnumpy.random._commonrrr ImportErrorrrflagsoptimizepathdirnameabspath__file__rrr/r1r4r;r?r=r>rMrZrjrkrrrrrrrrrrsT ,        %''$