o 6an @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)requestr?/usr/lib/python3/dist-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 }|rVd }|d |}|d |}|d |}|d |}|d |}||||dd ||||||||d d ||dd ||dd dS)Ng@@g(@Y@rgP@r@)rr%?g?rrr)rarangereshapearraymax)rboundedabcdegrrrparams_1s*    r4cCsd}t|tr|D] }|t||||M}q |St|t|kr-|t|t|kM}|St|tttjfrRt|tttjfrRt||D] \}}|t||M}qD|S|||kM}|S)NT) isinstancedict comp_statetypelisttuplerndarrayzip)state1state2 identicalkeys1s2rrrr7>s     r7cCs|dur dtjdd}|||||j|tjd|j|tjd|jdd|tjd|jdd|tjd|d||jd|tjd|j|tjd|j|tjddS)N rrlg&@) rrandomrandintstandard_normalfloat32integersuint64standard_gammafloat64)rgnrrrwarmupOs   rQc@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)RNGcCDt|_d|_dg|_t|j|j|_|jjj|_d|_| dS)N90@ r bit_generatoradvanceseedrrOstate initial_stateseed_vector_bits _extra_setupclsrrr setup_class_s  zRNG.setup_classcCsHtdd|_tdddddf|_tdddd|_t|_dS)Nr"r#g{Gz?drb)rr)vec_1dvec_2dr*mat TypeError seed_errorr^rrrr]js zRNG._extra_setupcCs|j|jj_dSr)r[rOrWrZselfrrr _reset_stateqszRNG._reset_statecCsJt|}|jj}|d|d||j_|jj}tt||dS)Nr%)rrWrZrIrr7)rirOrZ new_staterrr test_initts   z RNG.test_initcCsb|jjj}t|jjdr!|jj|jtt||jjj dS|jjjj}t d|dS)NrXzAdvance is not supported by ) rOrWrZhasattrrXrr7 __class____name__pytestskip)rirZ bitgen_namerrr test_advance}s  zRNG.test_advancecCs|jjj}t|jjdr:|jj}|j}tt|| |jd||jj_|jj}|j}tt||dS|jjjj }|dvrKt d|t d|dS)Njumpedi.)r zno "jumped" in zJump is not supported by ) rOrWrZrmrtrr7rGrnroAttributeErrorrprq)rirZbit_gen2 jumped_statebit_gen3rejumped_staterrrrr test_jumps      z RNG.test_jumpcCsF|jjdddd}tt|dkt|dkt|dkdS)Nrrr)rOuniformrlenallrirrrr test_uniformszRNG.test_uniformcCs|jjtdgdddd}tt|dkt|dkt|dk|jjtdgdtdgddd}tt|dkt|dkt|dk|jjdtdgddd}tt|dkt|dkt|dkdS)Nr{rr|rr}r)rOr~rr+rrrrrrrtest_uniform_arrayszRNG.test_uniform_arraycC(tt|jddkt|jjdSNr)rrrOrGr!rhrrr test_randomzRNG.test_randomcCstt|jddkdSr)rrrOrIrhrrrtest_standard_normal_zigszRNG.test_standard_normal_zigcCrr)rrrOrIr!rhrrrtest_standard_normalrzRNG.test_standard_normalcCsPtt|jdddktt|jtdgdddkt|jjdSr)rrrOrMrr+r4rhrrrtest_standard_gammas&zRNG.test_standard_gammacCrr)rrrOstandard_exponentialr!rhrrrtest_standard_exponentialrzRNG.test_standard_exponentialcCsH|jjddd}tt|dk|jtjksJtt|jjdddS)NrrJrE rOrrrrrrJr!rrirandomsrrrtest_standard_exponential_floatsz#RNG.test_standard_exponential_floatcCsL|jjdddd}tt|dk|jtjksJtt|jjddddS)NrrJinv)rmethodrrrrr#test_standard_exponential_float_logs   z'RNG.test_standard_exponential_float_logcCrr)rrrOstandard_cauchyr!rhrrrtest_standard_cauchyrzRNG.test_standard_cauchycCs*tt|jdddkt|jjdSr)rrrO standard_tr4rhrrrtest_standard_tszRNG.test_standard_tcCs0t|jdddkt|jdddkdS)Nrr&r)rrObinomialrhrrr test_binomialszRNG.test_binomialcCs<|jjj}|jd}||jj_|jd}t||kdS)Nl)rOrWrZrKr)rirZint_1int_2rrrtest_reset_states    zRNG.test_reset_statecCs4t|}t|}tt|jj|jj dSr)rrWrr7rZrirOrg2rrrtest_entropy_inits    zRNG.test_entropy_initcCsJt|j|j}t|j|j}||tt|jj|jjdSr)rrWrYrGrr7rZrrrr test_seeds z RNG.test_seedcCsZt|j|j}||jj}|jdd}t|}||j_|jdd}t||dS)Nrr)rrWrYrIrZrrirOrZn1rn2rrrtest_reset_state_gausss   zRNG.test_reset_state_gausscCsvt|j|j}|jdddtjd|jj}|jdddtjd}t|}||j_|jdddtjd}t||dS)NrrFxrEr)rrWrYrKruint32rZrrrrrtest_reset_state_uint32s zRNG.test_reset_state_uint32cCsht|j|j}|jdd|jj}|jddd}t|}||j_|jddd}t||kdS)NrJrErrr)rrWrYrGrZrrrrrrtest_reset_state_floats  zRNG.test_reset_state_floatcC.tddd}|j|}t||kdSNrr}rr)rO permutationranyrioriginalpermutedrrr test_shuffle  zRNG.test_shufflecCrrrrrrrtest_permutationrzRNG.test_permutationcCs|jddd}tt|dk|jtdgdd}tt|dk|jdtdgd}tt|dk|jtdgdtdgd}tt|dk|jtdgdtdggd}t|jdkdS)Nr"rr)rObetarrrr+rrivalsrrr test_betas&(z RNG.test_betacCs |jd}tt|dkdSr)rObytesrrrrrr test_bytes"s zRNG.test_bytescC.|jdd}tt|dkt|jjdSNr"r)rO chisquarerrr4rrrrtest_chisquare&zRNG.test_chisquarecCrr)rO exponentialrrr4rrrrtest_exponential+rzRNG.test_exponentialcC$|jddd}tt|dkdS)Nrr)rOrrrrrrrtest_f0z RNG.test_fcCr)Nrr(r)rOgammarrrrrr test_gamma4rzRNG.test_gammacCs2|jdd}tt|dkt|jjdddS)Nr&rTr-)rO geometricrrr4rrrrrtest_geometric8zRNG.test_geometriccC$|jddd}tt|dkdSr)rOgumbelrrrrrr test_gumbel=rzRNG.test_gumbelcCrr)rOlaplacerrrrrr test_laplaceArzRNG.test_laplacecCrr)rOlogisticrrrrrr test_logiticErzRNG.test_logiticcC"|jdd}tt|dkdS)Nr&r)rO logseriesrrrrrrtest_logseriesIzRNG.test_logseriescC$|jddd}tt|dkdSNr皙?)rOnegative_binomialrrrrrrtest_negative_binomialMrzRNG.test_negative_binomialcCr)Nrr()rOnoncentral_chisquarerrrrrrtest_noncentral_chisquareQrzRNG.test_noncentral_chisquarecCs|jdddd}tt|dk|jtdgddd}tt|dk|jdtdgdd}tt|dk|jddtdgd}tt|dkdS)Nrrr(r)rO noncentral_frrrr+rrrrtest_noncentral_fUszRNG.test_noncentral_fcCrr)rOnormalrrrrrr test_normal_rzRNG.test_normalcCr)Nr$r)rOparetorrrrrr test_paretocrzRNG.test_paretocCsV|jdd}tt|dk|jtdgd}tt|dkt|jjdSr)rOpoissonrrrr+r4rrrr test_poissongs zRNG.test_poissoncCr)Nrr)rOpowerrrrrrr test_powernrzRNG.test_powercCr)NrrD)rOrKrrrrrr test_integersrrzRNG.test_integerscCs2|jdd}tt|dkt|jjdddS)NrrTr)rOrayleighrrr4rrrr test_rayleighvrzRNG.test_rayleighcCrr)rOvonmisesrrrrrr test_vonmises{rzRNG.test_vonmisescCrN?r)rOwaldrrrrrr test_waldrz RNG.test_waldcCrr)rOweibullrrrrrr test_weibullrzRNG.test_weibullcCsx|jdd}tt|dk|j|j}tt|dk|j|j}t|jdk|j|j}t|jdkdS)Nrrb)r%rbra)rOzipfrrrcrdrrerrrr test_zipfsz RNG.test_zipfcCsL|jddd}tt||jtdgddd}t|jdkdS)NrDrr)rOhypergeometricrrrr+rrrrrtest_hypergeometriczRNG.test_hypergeometriccCsL|jddd}tt||jdtdgdd}t|jdkdS)Nrrrr)rO triangularrrrr+rrrrrtest_triangularrzRNG.test_triangularcCsddg}ddgddgg}|j||d}t|jdk|j||d}t|jdk|j||d}t|jdkt||kdS)Nrr%rb)rr()rOmultivariate_normalrrr)rimeancovxx_zigx_invrrrtest_multivariate_normalszRNG.test_multivariate_normalcCsH|jdddg}t|jdk|jjdddgdd}t|jdkdS)NrbgUUUUUU?gUUUUUU?)r(rrr')rO multinomialrrrrrrtest_multinomialszRNG.test_multinomialcCs |jdd}t|jdkdS)N)rrrrD)rDr)rO dirichletrr)risrrrtest_dirichletszRNG.test_dirichletcCst|j}t|}tt|jt|ktt|jjj|jjt|j}t|}tt|jt|ktt|jjj|jjdSr) pickledumpsrOloadsrr8r7rWrZ)ripickunpickrrr test_pickles       zRNG.test_picklecCsX|jdur|jj}td||jdkrtj}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%rErir()r\rWrorprqrrrLr+rZrr7r)mod)rirrrrYbgr=r>rrrtest_seed_arraysD       zRNG.test_seed_arraycCst|d}t||jj}|jdtjd}t|}t|||j_|jdtjd}t||t|j tjt t |jj|jjdS)NrTrCrE) rrWrQrZrGrrJrrrrr7rirOrZr1rr2rrrtest_uniform_floats  zRNG.test_uniform_floatcCst|}t||jj}|jddtjd}t|}t|||j_|jddtjd}t||t|j tjt t |jj|jjdS)Ng@rCrE) rrWrQrZrMrrJrrrrr7rrrrtest_gamma_floatss   zRNG.test_gamma_floatscCt|}t||jj}|jdtjd}t|}t|||j_|jdtjd}t||t|j tjt t |jj|jjdSNrCrE rrWrQrZrIrrJrrrrr7rrrrtest_normal_floats   zRNG.test_normal_floatscCrrrrrrrtest_normal_zig_floats r 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)r'rrEr'rr) rOrWrZremptyrIrrrJ)rirOrZrexistingdirectsizedrrrtest_output_fills$     zRNG.test_output_fillcC|j}|jj}d}t|}||j_|j|d||j_|j|d}t||tj|tjd}||j_|j|tjd||j_|j|tjd}t||dSNr"r&rrEr(r)rOrWrZrr)rGrrJrirOrZrr*r+rrrtest_output_filling_uniform/    zRNG.test_output_filling_uniformcCr.r/)rOrWrZrr)rrrJr0rrrtest_output_filling_exponentialAr2z#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)Nr"rr&rrEr(r)rOrWrZrzerosrMrrJr0rrrtest_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) Nr"g@X@rr&rrEr(r) rOrWrZrr)r4rMrrJ)rirOrZrmur*r+rrr#test_output_filling_gamma_broadcastes   z'RNG.test_output_filling_gamma_broadcastcCs|j}d}t|}tt|j|tjdWdn1s"wYtt|j|ddddWdn1sBwYtj|tjd}tt|j|tj dWdn1sgwYtj |tjd}tt|j d|tj dWdn1swYtt|j d|dddtjdWdn1swYtj |tj d}tt|j d|tjdWdn1swYtt|j d|ddddWddS1swYdS)Nr"r(rr&rEr) rOrr)rpraisesrfrIrJ ValueErrorrNr4rM)rirOrr*rrrtest_output_fill_errorxs6        "zRNG.test_output_fill_errorc Csf|tjkr d}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%rrEr) rbool_iinfointr,minrjrOrKrr+object) rirupperlowerinfor.r/r0r1r2rrrtest_integers_broadcastsB       zRNG.test_integers_broadcastcCstdg}tdg}|jj|||d}|jdksJ|jj|d||d}|jdks.J|jj||d|d}|jdks@JdS)Nr%rrE)r%)rr+rOrKr)rirhighlowr'rrrtest_integers_numpys  zRNG.test_integers_numpycCsL|tjkr d}d}nt|}t|jd}|j}tt|j j ||dgd|dWdn1s7wYtt|j j |d|gd|dWdn1sZwYtt|j j |dg|gd|dWdn1s~wYtt|j j dgdg|dWddS1swYdS)Nr(rr%rrE) rr;r<r=r,r>rpr8r9rOrK)rirr@rArBrrrtest_integers_broadcast_errorss$       "z"RNG.test_integers_broadcast_errorsN)Jro __module__ __qualname__ classmethodr`r]rjrlrsrzrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr rrrrrr!r-r1r3r5r7r:rCrFrGrrrrrR^s            &    ! rRc@s eZdZeddZddZdS) TestMT19937cCsJt|_d|_dg|_t|j|j|_|jjj|_d|_| t |_ dS)Ni!!r) rrWrXrYrrOrZr[r\r]r9rgr^rrrr`s  zTestMT19937.setup_classcCshtj}|d|}||jj_|jjj}t|d|ddk t|d|ddkdS)Ncr%rZr@r(pos) rrG RandomStaterI get_staterOrWrZrr)rinprgrZr>rrrtest_numpy_states    zTestMT19937.test_numpy_stateN)rorHrIrJr`rQrrrrrKs  rKc@eZdZeddZdS) TestPhiloxcCDt|_d|_dg|_t|j|j|_|jjj|_d|_| dSNlrTrU) r rWrXrYrrOrZr[r\r]r^rrrr`  zTestPhilox.setup_classNrorHrIrJr`rrrrrSrSc@rR) TestSFC64cCrS)NrT) r rWrXrYrrOrZr[r\r]r^rrrr`rVzTestSFC64.setup_classNrWrrrrrYrXrYc@rR) TestPCG64cCrTrUrVr^rrrr`rVzTestPCG64.setup_classNrWrrrrr[rXr[c@rR) TestPCG64DXSMcCrTrU) r rWrXrYrrOrZr[r\r]r^rrrr` rVzTestPCG64DXSM.setup_classNrWrrrrr\ rXr\c@s(eZdZeddZddZddZdS)TestDefaultRNGcCsBt|_d|_dg|_tjj|j|_|jjj|_ d|_ | dSrU) rrWrXrYrrG default_rngrOrZr[r\r]r^rrrr`s  zTestDefaultRNG.setup_classcCstt|jjtdSr)rr5rOrWrrhrrrtest_default_is_pcg64"sz$TestDefaultRNG.test_default_is_pcg64cCstjtjdtjdtjdtjdtjddgtttjdWdn1s;wYtttjddgWddS1sYwYdS)NrTrl -tE+I6%Yl l ) ~eR :TI*6r})rrGr^rpr8r9rhrrrr's       "zTestDefaultRNG.test_seedN)rorHrIrJr`r_rrrrrr]s   r])Fr)'r  functoolsrnumpyrrp numpy.testingrrr numpy.randomrrrr r r fixturer;int8int16int32int64uint8uint16rrLrr!r4r7rQrRrKrSrYr[r\r]rrrrs6    ! u