a :jgn @s(ddlZddlmZddlZddlZddlmZmZm Z ddl m Z m Z m Z mZmZmZejdejejejejejejejejejf dddZd d Zd d d ZddZd!ddZGdddZ Gddde Z!Gddde Z"Gddde Z#Gddde Z$Gddde Z%Gddde Z&dS)"N)partial) assert_equalassert_assert_array_equal) GeneratorMT19937PCG64 PCG64DXSMPhiloxSFC64module)scopeparamscCs|jSN)param)requestrG/usr/local/lib/python3.9/site-packages/numpy/random/tests/test_smoke.pydtype srcCsr|}tt||d}t|jdk|d}t|jdk|d}t|jdk|dd}t|jdkdS)N rrrrrr)rsize)rnpisscalarshape)fvalrrrparams_0s r!FcCsd}tdd}tddd}tddd}tddg}tddd }|rd }|d |}|d |}|d |}|d |}|d |}||||dd ||||||||d d ||dd ||dd dS)Ng@@g(@Y@rgP@r@)rr%?g?rrr)rarangereshapearraymax)rboundedabcdegrrrparams_1s*    r4cCsd}t|tr0|D]}|t||||M}qnzt|t|krV|t|t|kM}nTt|tttjfrt|tttjfrt||D]\}}|t||M}qn |||kM}|S)NT) isinstancedict comp_statetypelisttuplerZndarrayzip)state1state2Z identicalkeys1s2rrrr7>s   r7cCs|durdtjdd}|||||j|tjd|j|tjd|jdd|tjd|jdd|tjd|d||jd|tjd|j|tjd|j|tjddS)N rrlg&@) rrandomrandintstandard_normalfloat32integersuint64standard_gammafloat64)rgnrrrwarmupOs   rOc@sDeZdZeddZeddZddZddZd d Zd d Z d dZ ddZ ddZ ddZ ddZddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3d4Zd5d6Zd7d8Zd9d:Z d;d<Z!d=d>Z"d?d@Z#dAdBZ$dCdDZ%dEdFZ&dGdHZ'dIdJZ(dKdLZ)dMdNZ*dOdPZ+dQdRZ,dSdTZ-dUdVZ.dWdXZ/dYdZZ0d[d\Z1d]d^Z2d_d`Z3dadbZ4dcddZ5dedfZ6dgdhZ7didjZ8dkdlZ9dmdnZ:dodpZ;dqdrZdwdxZ?dydzZ@d{d|ZAd}d~ZBddZCddZDddZEddZFddZGddZHddZIdS)RNGcCsDt|_d|_dg|_t|j|j|_|jjj|_d|_| dS)N90@ r bit_generatoradvanceseedrrMstate initial_stateseed_vector_bits _extra_setupclsrrr setup_class_s zRNG.setup_classcCsHtdd|_tdddddf|_tdddd|_t|_dS)Nr"r#g{Gz?dr_)rr)vec_1dvec_2dr*mat TypeError seed_errorr[rrrrZjszRNG._extra_setupcCs|j|jj_dSr)rXrMrTrWselfrrr _reset_stateqszRNG._reset_statecCsJt|}|jj}|d|d||j_|jj}tt||dS)Nr%)rrTrWrGrr7)rfrMrW new_staterrr test_initts   z RNG.test_initcCs`|jjj}t|jjdr@|jj|jtt||jjj n|jjjj}t d|dS)NrUzAdvance is not supported by ) rMrTrWhasattrrUrr7 __class____name__pytestskip)rfrW bitgen_namerrr test_advance}s   zRNG.test_advancecCs|jjj}t|jjdrr|jj}|j}tt|| |jd||jj_|jj}|j}tt||n2|jjjj }|dvrt d|t d|dS)Njumpedi.)r zno "jumped" in zJump is not supported by ) rMrTrWrjrqrr7rErkrlAttributeErrorrmrn)rfrWZbit_gen2Z jumped_stateZbit_gen3Zrejumped_staterorrr test_jumps      z RNG.test_jumpcCsF|jjdddd}tt|dkt|dkt|dkdS)Nrrr)rMuniformrlenallrfrrrr test_uniformszRNG.test_uniformcCs|jjtdgdddd}tt|dkt|dkt|dk|jjtdgdtdgddd}tt|dkt|dkt|dk|jjdtdgddd}tt|dkt|dkt|dkdS)Nrtrrurrvr)rMrwrr+rrxryrzrrrtest_uniform_arrayszRNG.test_uniform_arraycCs(tt|jddkt|jjdSNr)rrxrMrEr!rerrr test_randomszRNG.test_randomcCstt|jddkdSr~)rrxrMrGrerrrtest_standard_normal_zigszRNG.test_standard_normal_zigcCs(tt|jddkt|jjdSr~)rrxrMrGr!rerrrtest_standard_normalszRNG.test_standard_normalcCsPtt|jdddktt|jtdgdddkt|jjdSr~)rrxrMrKrr+r4rerrrtest_standard_gammas&zRNG.test_standard_gammacCs(tt|jddkt|jjdSr~)rrxrMstandard_exponentialr!rerrrtest_standard_exponentialszRNG.test_standard_exponentialcCsH|jjddd}tt|dk|jtjks0Jtt|jjdddS)NrrHrC rMrrrxrrrHr!rrfZrandomsrrrtest_standard_exponential_floatsz#RNG.test_standard_exponential_floatcCsL|jjdddd}tt|dk|jtjks2Jtt|jjddddS)NrrHinv)rmethodrrrrr#test_standard_exponential_float_logs  z'RNG.test_standard_exponential_float_logcCs(tt|jddkt|jjdSr~)rrxrMZstandard_cauchyr!rerrrtest_standard_cauchyszRNG.test_standard_cauchycCs*tt|jdddkt|jjdSr~)rrxrMZ standard_tr4rerrrtest_standard_tszRNG.test_standard_tcCs0t|jdddkt|jdddkdS)Nrr&r)rrMZbinomialrerrr test_binomialszRNG.test_binomialcCs<|jjj}|jd}||jj_|jd}t||kdS)Nl)rMrTrWrIr)rfrWZint_1Zint_2rrrtest_reset_states     zRNG.test_reset_statecCs4t|}t|}tt|jj|jj dSr)rrTrr7rWrfrMrg2rrrtest_entropy_inits    zRNG.test_entropy_initcCsJt|j|j}t|j|j}||tt|jj|jjdSr)rrTrVrErr7rWrrrr test_seeds z RNG.test_seedcCsZt|j|j}||jj}|jdd}t|}||j_|jdd}t||dS)Nrr)rrTrVrGrWrrfrMrWZn1rZn2rrrtest_reset_state_gausss   zRNG.test_reset_state_gausscCsvt|j|j}|jdddtjd|jj}|jdddtjd}t|}||j_|jdddtjd}t||dS)NrrDxrCr)rrTrVrIruint32rWrrrrrtest_reset_state_uint32s zRNG.test_reset_state_uint32cCsht|j|j}|jdd|jj}|jddd}t|}||j_|jddd}t||kdS)NrHrCrrr)rrTrVrErWrryrrrrtest_reset_state_floats  zRNG.test_reset_state_floatcCs.tddd}|j|}t||kdSNrrvrr)rMZ permutationranyrforiginalZpermutedrrr test_shuffle s zRNG.test_shufflecCs.tddd}|j|}t||kdSrrrrrrtest_permutations zRNG.test_permutationcCs|jddd}tt|dk|jtdgdd}tt|dk|jdtdgd}tt|dk|jtdgdtdgd}tt|dk|jtdgdtdggd}t|jdkdS)Nr"rr)rMbetarrxrr+rrfvalsrrr test_betas&(z RNG.test_betacCs |jd}tt|dkdSr~)rMbytesrrxrrrr test_bytes"s zRNG.test_bytescCs.|jdd}tt|dkt|jjdSNr"r)rMZ chisquarerrxr4rrrrtest_chisquare&szRNG.test_chisquarecCs.|jdd}tt|dkt|jjdSr)rM exponentialrrxr4rrrrtest_exponential+szRNG.test_exponentialcCs$|jddd}tt|dkdS)Nrr)rMrrrxrrrrtest_f0sz RNG.test_fcCs$|jddd}tt|dkdS)Nrr(r)rMgammarrxrrrr test_gamma4szRNG.test_gammacCs2|jdd}tt|dkt|jjdddS)Nr&rTr-)rMZ geometricrrxr4rrrrrtest_geometric8szRNG.test_geometriccCs$|jddd}tt|dkdSr)rMZgumbelrrxrrrr test_gumbel=szRNG.test_gumbelcCs$|jddd}tt|dkdSr)rMZlaplacerrxrrrr test_laplaceAszRNG.test_laplacecCs$|jddd}tt|dkdSr)rMZlogisticrrxrrrr test_logiticEszRNG.test_logiticcCs"|jdd}tt|dkdS)Nr&r)rMZ logseriesrrxrrrrtest_logseriesIszRNG.test_logseriescCs$|jddd}tt|dkdSNr皙?)rMZnegative_binomialrrxrrrrtest_negative_binomialMszRNG.test_negative_binomialcCs$|jddd}tt|dkdS)Nrr()rMZnoncentral_chisquarerrxrrrrtest_noncentral_chisquareQszRNG.test_noncentral_chisquarecCs|jdddd}tt|dk|jtdgddd}tt|dk|jdtdgdd}tt|dk|jddtdgd}tt|dkdS)Nrrr(r)rMZ noncentral_frrxrr+rrrrtest_noncentral_fUszRNG.test_noncentral_fcCs$|jddd}tt|dkdSr)rMnormalrrxrrrr test_normal_szRNG.test_normalcCs"|jdd}tt|dkdS)Nr$r)rMZparetorrxrrrr test_paretocszRNG.test_paretocCsV|jdd}tt|dk|jtdgd}tt|dkt|jjdSr~)rMZpoissonrrxrr+r4rrrr test_poissongs zRNG.test_poissoncCs"|jdd}tt|dkdS)Nrr)rMpowerrrxrrrr test_powernszRNG.test_powercCs$|jddd}tt|dkdS)NrrB)rMrIrrxrrrr test_integersrszRNG.test_integerscCs2|jdd}tt|dkt|jjdddS)NrrTr)rMZrayleighrrxr4rrrr test_rayleighvszRNG.test_rayleighcCs$|jddd}tt|dkdSr)rMZvonmisesrrxrrrr test_vonmises{szRNG.test_vonmisescCs$|jddd}tt|dkdSN?r)rMZwaldrrxrrrr test_waldsz RNG.test_waldcCs"|jdd}tt|dkdSr)rMZweibullrrxrrrr test_weibullszRNG.test_weibullcCsx|jdd}tt|dk|j|j}tt|dk|j|j}t|jdk|j|j}t|jdkdS)Nrr_)r%r_r^)rMZzipfrrxr`rarrbrrrr test_zipfsz RNG.test_zipfcCsL|jddd}tt||jtdgddd}t|jdkdS)NrBrr)rMZhypergeometricrrrr+rrrrrtest_hypergeometricszRNG.test_hypergeometriccCsL|jddd}tt||jdtdgdd}t|jdkdS)Nrrrr)rM triangularrrrr+rrrrrtest_triangularszRNG.test_triangularcCsddg}ddgddgg}|j||d}t|jdk|j||d}t|jdk|j||d}t|jdkt||kdS)Nrr%r_)rr()rMZmultivariate_normalrrr)rfmeanZcovxZx_zigZx_invrrrtest_multivariate_normalszRNG.test_multivariate_normalcCsH|jdddg}t|jdk|jjdddgdd}t|jdkdS)Nr_gUUUUUU?gUUUUUU?)r(rrr')rMZ multinomialrrrrrrtest_multinomialszRNG.test_multinomialcCs |jdd}t|jdkdS)N)rrrrB)rBr)rMZ dirichletrr)rfsrrrtest_dirichletszRNG.test_dirichletcCst|j}t|}tt|jt|ktt|jjj|jjt|j}t|}tt|jt|ktt|jjj|jjdSr) pickledumpsrMloadsrr8r7rTrW)rfpickZunpickrrr test_pickles      zRNG.test_picklecCsX|jdur"|jj}td||jdkr4tj}ntj}tjdg|d}||}|j }|d}|j }t t ||tj d|d}||}|j }||d}|j }t t || tj d|d}||}|j }||d}|j }t t || dt tj d|d|jdd}||}|j }||d}|j }t t || dS) Nz#Vector seeding is not supported by r%rCrir()rYrTrlrmrnrrrJr+rWrr7r)mod)rfrorrVbgr<r=rrrtest_seed_arraysD       zRNG.test_seed_arraycCst|d}t||jj}|jdtjd}t|}t|||j_|jdtjd}t||t|j tjt t |jj|jjdS)NrQrArC) rrTrOrWrErrHrrrrr7rfrMrWr1rr2rrrtest_uniform_floats  zRNG.test_uniform_floatcCst|}t||jj}|jddtjd}t|}t|||j_|jddtjd}t||t|j tjt t |jj|jjdS)Ng@rArC) rrTrOrWrKrrHrrrrr7rrrrtest_gamma_floatss   zRNG.test_gamma_floatscCst|}t||jj}|jdtjd}t|}t|||j_|jdtjd}t||t|j tjt t |jj|jjdSNrArC rrTrOrWrGrrHrrrrr7rrrrtest_normal_floatss   zRNG.test_normal_floatscCst|}t||jj}|jdtjd}t|}t|||j_|jdtjd}t||t|j tjt t |jj|jjdSrrrrrrtest_normal_zig_floats s   zRNG.test_normal_zig_floatscCs|j}|jj}d}t|}||j_|j|d||j_|j|d}t||t|}||j_|j||jdtj|tjd}||j_|j|tjd||j_|j|tjd}t||dS)Naoutr)rrrCrrr) rMrTrWremptyrGrrrH)rfrMrWrexistingdirectZsizedrrrtest_output_fills$     zRNG.test_output_fillcCs|j}|jj}d}t|}||j_|j|d||j_|j|d}t||tj|tjd}||j_|j|tjd||j_|j|tjd}t||dSNrrrrCrr)rMrTrWrrrErrHrfrMrWrrrrrrtest_output_filling_uniform/s    zRNG.test_output_filling_uniformcCs|j}|jj}d}t|}||j_|j|d||j_|j|d}t||tj|tjd}||j_|j|tjd||j_|j|tjd}t||dSr)rMrTrWrrrrrHrrrrtest_output_filling_exponentialAs    z#RNG.test_output_filling_exponentialcCs|j}|jj}d}t|}||j_|jd|d||j_|jd|d}t||tj|tjd}||j_|jd|tjd||j_|jd|tjd}t||dS)NrrrrrCrr)rMrTrWrzerosrKrrHrrrrtest_output_filling_gammaSs  zRNG.test_output_filling_gammacCs|j}|jj}d}tdd}t|}||j_|j||d||j_|j||d}t||tj|tjd}||j_|j||tjd||j_|j||tjd}t||dS) Nrg@X@rrrrCrr) rMrTrWrr)rrKrrH)rfrMrWrmurrrrr#test_output_filling_gamma_broadcastes   z'RNG.test_output_filling_gamma_broadcastcCs|j}d}t|}tt |j|tjdWdn1sD0Ytt&|j|ddddWdn1s0Ytj|tjd}tt |j|tj dWdn1s0Ytj |tjd}tt"|j d|tj dWdn1s0Ytt,|j d|dddtjdWdn1sd0Ytj |tj d}tt"|j d|tjdWdn1s0Ytt(|j d|ddddWdn1s0YdS)NrrrrrCr) rMrrrmraisesrcrGrH ValueErrorrLrrK)rfrMrrrrrtest_output_fill_errorxs(  . 4 . 2 < 2 zRNG.test_output_fill_errorc Csf|tjkrd}d}nt|}t|jd}|j}||jj||gd|d}||jj|gd||d}t ||||jj||d|d}t ||||jjt |gdtj |gt dd|d}t ||||jjt |gdt |gdd|d} t || ||jjd|d|d}||jj|gd|d}t ||dS)Nr(rr%rrCr) rbooliinfointr,minrgrMrIrr+object) rfrupperlowerinfor.r/r0r1r2rrrtest_integers_broadcastsB       zRNG.test_integers_broadcastcCstdg}tdg}|jj|||d}|jdks8J|jj|d||d}|jdks\J|jj||d|d}|jdksJdS)Nr%rrC)r%)rr+rMrIr)rfrhighlowrrrrtest_integers_numpys  zRNG.test_integers_numpycCsL|tjkrd}d}nt|}t|jd}|j}tt,|j j ||dgd|dWdn1sn0Ytt,|j j |d|gd|dWdn1s0Ytt.|j j |dg|gd|dWdn1s0Ytt&|j j dgdg|dWdn1s>0YdS)Nr(rr%rrC) rrrrr,rrmrrrMrI)rfrrrrrrrtest_integers_broadcast_errorss   : : < z"RNG.test_integers_broadcast_errorsN)Jrl __module__ __qualname__ classmethodr]rZrgrirprsr|r}rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr r rrrrrP^s            &    ! rPc@s eZdZeddZddZdS) TestMT19937cCsJt|_d|_dg|_t|j|j|_|jjj|_d|_| t |_ dS)Ni!!r) rrTrUrVrrMrWrXrYrZrrdr[rrrr]s zTestMT19937.setup_classcCshtj}|d|}||jj_|jjj}t|d|ddk t|d|ddkdS)Ncr%rWr>r(pos) rrEZ RandomStaterGZ get_staterMrTrWrry)rfZnprgrWr=rrrtest_numpy_states    zTestMT19937.test_numpy_stateN)rlr r rr]rrrrrrs rc@seZdZeddZdS) TestPhiloxcCsDt|_d|_dg|_t|j|j|_|jjj|_d|_| dSNlrQrR) r rTrUrVrrMrWrXrYrZr[rrrr]s zTestPhilox.setup_classNrlr r rr]rrrrrsrc@seZdZeddZdS) TestSFC64cCsDt|_d|_dg|_t|j|j|_|jjj|_d|_| dS)NrQ) r rTrUrVrrMrWrXrYrZr[rrrr]s zTestSFC64.setup_classNrrrrrrsrc@seZdZeddZdS) TestPCG64cCsDt|_d|_dg|_t|j|j|_|jjj|_d|_| dSrrSr[rrrr]s zTestPCG64.setup_classNrrrrrrsrc@seZdZeddZdS) TestPCG64DXSMcCsDt|_d|_dg|_t|j|j|_|jjj|_d|_| dSr) r rTrUrVrrMrWrXrYrZr[rrrr] s zTestPCG64DXSM.setup_classNrrrrrr src@s(eZdZeddZddZddZdS)TestDefaultRNGcCsBt|_d|_dg|_tjj|j|_|jjj|_ d|_ | dSr) rrTrUrVrrE default_rngrMrWrXrYrZr[rrrr]s zTestDefaultRNG.setup_classcCstt|jjtdSr)rr5rMrTrrerrrtest_default_is_pcg64"sz$TestDefaultRNG.test_default_is_pcg64cCstjtjdtjdtjdtjdtjddgtttjdWdn1sv0Ytt tjddgWdn1s0YdS)NrQrl -tE+I6%Yl l ) ~eR :TI*6rv)rrErrmrrrerrrr's      * zTestDefaultRNG.test_seedN)rlr r rr]rrrrrrrs r)F)N)'r functoolsrnumpyrrmZ numpy.testingrrrZ numpy.randomrrrr r r ZfixturerZint8Zint16Zint32Zint64Zuint8Zuint16rrJrr!r4r7rOrPrrrrrrrrrrs4    ! u