a :jg3K@sddlZddlmZddlZddlZddlmZmZm Z m Z ddl Z ddl m Z mZmZmZmZmZmZmZmZddlmZzddlZdZWneydZYn0zddlZdZWneydZYn0ejjdkrdZej ej!e"Z#d d Z$d d Z%d dZ&ddZ'ddZ(ddZ)ddZ*ddZ+ddZ,ddZ-ddZ.dd Z/d!d"Z0d#d$Z1Gd%d&d&Z2Gd'd(d(e2Z3Gd)d*d*e2Z4Gd+d,d,e2Z5Gd-d.d.e2Z6Gd/d0d0e2Z7Gd1d2d2Z8dS)3N)join) assert_equalassert_allcloseassert_array_equal assert_raises) GeneratorMT19937PCG64 PCG64DXSMPhilox RandomState SeedSequenceSFC64 default_rng) interfaceFTcCsh|D]^}t||tr*t||||qt||tjrNt||||q||||ksJqdSN) isinstancedictassert_state_equalnpZndarrayr)actualtargetkeyrH/usr/local/lib/python3.9/site-packages/numpy/random/tests/test_direct.pyr's rcCs|td?dtjS)Ngp>)ruint32Zastypefloat32)urrruint32_to_float321sr cCs\t|}tj|td?tjd}td}tj||@tjd}t||g}t|S)N dtype)ruint64arrayrZ column_stackZravelr )xupperlowerZjoinedrrruniform32_from_uint645s   r*cCs0t|td?}t|td@}t|S)Nr$)rr%rr r'rrruniform32_from_uint53>sr-cCst|Sr)r r,rrruniform32_from_uint32Dsr.cCs8|dkrt|S|dkr t|S|dkr0t|StdS)N@5r!)r*r-r.NotImplementedErrorr'bitsrrruniform32_from_uintHsr4cCs$|dvrt|S|dkr t|SdS)N)r/?r0r!)uniform_from_uint64uniform_from_uint32r2rrruniform_from_uintSsr8cCs|td?dS)N g<)rr%r,rrrr6Zsr6cCs`tt|d}tdt|dD]8}||d?}||dd?}|d|d||d<q"|S)NrrgAg@C)remptylenrange)r'outiabrrrr7^s  r7cCs|tjdS)N?)viewrdoubler,rrruniform_from_dsfmtgsrGc Cs|dvrt|}n|dkr$t|}nt|}g}d}d}}t||krd}|dks\|dkrd||d}d||dd}||||}|d7}qLtd t||} || ||| |q<|d|S) N)r/r5r!rr:rDg@rg)r6r7rGr>rsqrtlogappend) r'nr3Zdoublesgausslocx1Zx2r2frrrgauss_from_uintks&    rRcCsddlm}m}m}ttdddd}|dtfi|j}t|j|jt|j |j t t |t t ||}t t |j dt|ddksJdS)Nr) ISeedSequenceISpawnableSeedSequenceSeedlessSeedSequence )rr:r<) spawn_keyZ pool_size)numpy.random.bit_generatorrSrTrUr r?spawnstatern_children_spawnedr TypeErrorr1generate_stater>)rSrTrUs1s2dummyrrrtest_seedsequences   racstj}|jjd}fddtdD}dd|D|ksHJ|jd}fddtddD}dd|D|ksJ|d}fddtdd D}d d|D}||ksJ|d |d ksJd S)z? Test spawning new generators and bit_generators directly. r;csg|]}j|fqSrrW.0rAseqrr z+test_generator_spawning..cSsg|] }|jqSrrb)rdcrrrrgrhcsg|]}j|fqSrrbrcrerrrgrhrVcSsg|] }|jjqSr)seed_seqrW)rdbgrrrrgrhcsg|]}j|fqSrrbrcrerrrgrhcSsg|]}|jjjqSr) bit_generatorrjrW)rdrngrrrrgrhrrN)rrandomrrmrjrYr?uniform)rnZnew_ssZ expected_keysZnew_bgsZnew_rngsZ found_keysrrertest_generator_spawnings     rqcCsddlm}Gddd}||tj|}tjtdd| dWdn1s`0Ytjtdd|j dWdn1s0YdS)Nr)rSc@seZdZejfddZdS)z,test_non_spawnable..FakeSeedSequencecSstj||dS)Nr")rZzeros)selfZn_wordsr#rrrr]sz;test_non_spawnable..FakeSeedSequence.generate_stateN)__name__ __module__ __qualname__rrr]rrrrFakeSeedSequencesrvzThe underlying SeedSequence)matchr;) rXrSregisterrrorpytestraisesr\rYrm)rSrvrnrrrtest_non_spawnables  (r{c@seZdZejZiZZeddZ eddZ ddZ ddZ d d Z d d Zd dZddZddZddZddZddZddZddZddZdd Zejjed!d"d#d$Zejjed%d"d&d'Zd(d)Z d*S)+BasecCs*t|_d|_tj|_t|_g|_g|_ dS)Nr/) r rmr3rr%r#r\seed_error_typeinvalid_init_typesinvalid_init_valuesclsrrr setup_classs zBase.setup_classcCst|z}|}|d}dd|ddD}g}|D]"}|t|dddq:|tj||jddWdS1s0YdS) N,cSsg|]}t|dqS)r)intstrip)rdsrrrrgrhz"Base._read_csv..rrr")seeddata) openreadlinesplitrKrrrr&r#)rfilenamecsvrrlinerrr _read_csvs   zBase._read_csvcCs|j|jd}|d}t||jd|j|jd}|}t||jdd|j|jd}|d}t||jddS)Nrrr)rmdata1 random_rawrdata2rrrmZuintsrrrtest_raws  z Base.test_rawcCsF|j|jd}|jdd}|dus(J|jddd}|dusBJdS)NrF)outputr)rmrrrrrrtest_random_raws   zBase.test_random_rawcCsxd}t|j|jd}||}t|t|jd||jt|j|jd}|d}t|t|jd||jdS)Nrr)r rmrstandard_normalrrRr3r)rrrLrsrMrrrtest_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)Nrr) rrmrr8r3ror>rrr#rZfloat64rrrrvalsZuniformsrrrtest_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)Nrrr") rrmrr4r3ror>rrrrr#rrrrrtest_uniform_floats  zBase.test_uniform_floatcCsLt|j|jd}dt|vs$Jt|dddt|vsHJdSNrrz#xXr')rrmrrepridr(replacerrrrrr test_reprszBase.test_reprcCsdt|j|jd}dt|vs$Jt|jjt|vsrhz/TestPCG64.test_advange_large..`r/r!r+rr:rl @H}.|zKLfberrmrZrsumrrrZpcgrZZ initial_stateZadvanced_staterrrtest_advange_larges  zTestPCG64.test_advange_largeNrsrtrurrrrrrrrrs rc@s(eZdZeddZddZddZdS) TestPCG64DXSMcCs^t|_d|_tj|_|ttd|_ |ttd|_ t t f|_ ddgfdg|_dg|_dS)Nr/z./data/pcg64dxsm-testset-1.csvz./data/pcg64dxsm-testset-2.csvrrr)r rmr3rr%r#rrrrrrr\r}r~rrrrrrs zTestPCG64DXSM.setup_classcCst|j|jd}|jj}d}|j||d}||j_|jdd||d}||j_|jddd||d}||ksJ||ksJdSrrrrrrrs     z#TestPCG64DXSM.test_advance_symmetrycCslt|d}|j}|j}d}|dd|ks2J|tdddD|jd}d}|d|kshJdS)NrrrZcss|]}d|VqdSrrrcrrrrrhz3TestPCG64DXSM.test_advange_large..rl oF [UmO1X9}rrrrrrs z TestPCG64DXSM.test_advange_largeNrrrrrrs rc@s(eZdZeddZddZddZdS) TestMT19937cCsPt|_d|_tj|_|ttd|_ |ttd|_ t |_ g|_ dg|_dS)Nr!z./data/mt19937-testset-1.csvz./data/mt19937-testset-2.csvr)rrmr3rrr#rrrrrrr}r~rrrrrrszTestMT19937.setup_classcCstt|jttjgtt|jttj gtt|jttjtj gtt|jtdtjgtt|jtjgtt|jdtjgdS)Nr)rr\rmrr&pi)rrrrrtest_seed_float_arrays z!TestMT19937.test_seed_float_arraycCst|j|jd}|j}|j}|d}|d|dd|ddf}||_|d}t|||d}||_|d}t||dS)NrirmrZrpos)rrH)rrmrrZrr)rrrrmrZZdesiredtuprrrrtest_state_tuples     zTestMT19937.test_state_tupleN)rsrtrurrrrrrrrrs rc@s eZdZeddZddZdS) TestSFC64cCs^t|_d|_tj|_|ttd|_ |ttd|_ t t f|_ ddgfdg|_dg|_dS)Nr/z./data/sfc64-testset-1.csvz./data/sfc64-testset-2.csvrrr)rrmr3rr%r#rrrrrrr\r}r~rrrrrrs zTestSFC64.setup_classcCsddl}ddl}tjgdtjd}tjtjt d}tj |dd}| |}| |}Wdn1sv0Yt |tsJt|jdd|dS)Nr)lVoTMQl *,!;laE]yg r"rzsfc64_np126.pkl.gzrZ)gziprrr&r%ospathrabspath__file__rrloadrrrrZ)rrrrZexpected_state base_pathZpkl_filegzZsfcrrrtest_legacy_pickle s  (zTestSFC64.test_legacy_pickleN)rsrtrurrrrrrrrs rc@seZdZddZddZdS)TestDefaultRNGcCs4dddddgffD]}t|}t|jtsJqdS)Nrr)ri.)rrrmr )rrargsrgrrr test_seed&szTestDefaultRNG.test_seedcCsBt}t|}|j|usJt|}||us0J|j|us>JdSr)r rrm)rrrkrZrg2rrrtest_passthrough+s  zTestDefaultRNG.test_passthroughN)rsrtrurrrrrrr%sr)9ros.pathrsysnumpyrZ numpy.testingrrrrryZ numpy.randomrrr r r r r rrZnumpy.random._commonrrr ImportErrorrrflagsoptimizerdirnamerrrrr r*r-r.r4r8r6r7rGrRrarqr{r|rrrrrrrrrrsT ,          8('$&