o ?OgŁ@s ddlmZddlmZmZmZ m Z m Z ddlmZmZmZmZddlmZmZmZddlmZddlm Z!m"Z#ddl$m%Z&ddl'm(Z)m*Z+dd l,m,Z-dd lZ.dd l/Z/zdd l0m1Z0Wne2yldd l3m1Z0Ynwgd Z4d ededZ5edZ6dedZ7dZ8de8 Z9dZ:Gddde/j;Z;Gddde;ZZ>e=j?Z?e=j@Z@e=jAZAe=jBZBe=jCZCe=jDZDe=jEZEe=jFZFe=jGZGe=jHZHe=jIZIe=jJZJe=jKZKe=jLZLe=jMZMe=jNZNe=jOZOe=jPZPe=jQZQe=jRZRe=jSZSe=jTZTddZUd"ddZVeWe.dre.jXe=j>d eYd!kreVd Sd S)#)warn)logexppieceil)sqrtacoscossin)taufloorisfinite)urandom)SetSequence)index) accumulaterepeat)bisectN)sha512)Random SystemRandom betavariatechoicechoices expovariate gammavariategauss getrandbitsgetstatelognormvariate normalvariate paretovariate randbytesrandintrandom randrangesampleseedsetstateshuffle triangularuniformvonmisesvariateweibullvariateg@@?@5cs,eZdZ dZdAddZdBfdd Zfdd Zfd d Zd d ZddZ ddZ ddZ ddZ de >fddZe ZddZdefddZddZdd ZdAd!d"Zdd#d$d%ZdAddd&d'd(Zd)d*ZdCd-d.Zd/d0Zd1d2Zd3d4Zd5d6Zd7d8Zd9d:Zd;d<Z d=d>Z!d?d@Z"Z#S)DrNcCs ||d|_dSN)r) gauss_next)selfxr=-/opt/alt/python310/lib64/python3.10/random.py__init__ws  zRandom.__init__r6cs |dkrCt|ttfrCt|tr|dn|}|r"t|dd>nd}tt|D] }d||Ad@}q)|t|N}|dkr@dn|}n5|d kret|tttfret|trX|}t |t | d }nt|t dt ttttfsxtd td t|d|_dS) Nr7zlatin-1riCBlr6bigzSeeding based on hashing is deprecated since Python 3.9 and will be removed in a subsequent version. The only supported seed types are: None, int, float, str, bytes, and bytearray.) isinstancestrbytesdecodeordmaplen bytearrayencodeint from_bytes_sha512Zdigesttypefloat_warnDeprecationWarningsuperr)r:)r;aversionr<c __class__r=r>r)s$    z Random.seedcs |jt|jfSr9)VERSIONrTr r:r;rXr=r>r zRandom.getstatec s |d}|dkr|\}}|_t|dS|dkrD|\}}|_z tdd|D}Wnty;}zt|d}~wwt|dStd||jf)Nrr8r6css|]}|dVqdS)lNr=).0r<r=r=r> sz"Random.setstate..z?state with version %s passed to Random.setstate() of version %s)r:rTr*tuple ValueError TypeErrorrZ)r;staterVZ internalstaterrXr=r>r*s"  zRandom.setstatecCs|Sr9)r r[r=r=r> __getstate__szRandom.__getstate__cCs||dSr9)r*)r;rbr=r=r> __setstate__szRandom.__setstate__cCs|jd|fS)Nr=)rYr r[r=r=r> __reduce__szRandom.__reduce__cKsR |jD]"}d|jvrdSd|jvr|j|_dSd|jvr&|j|_dSqdS)N _randbelowrr&)__mro____dict___randbelow_with_getrandbitsrf_randbelow_without_getrandbits)clskwargsrWr=r=r>__init_subclass__s    zRandom.__init_subclass__cCs< |sdS|j}|}||}||kr||}||ks|S)Nr)r bit_length)r;nrkrr=r=r>risz"Random._randbelow_with_getrandbitsr7cCsr |j}||krtdt||S|dkrdS||}|||}|}||kr1|}||ks*t|||S)NzUnderlying random() generator does not supply enough bits to choose from a population range this large. To remove the range limitation, add a getrandbits() method.r)r&rR_floor)r;romaxsizer&Zremlimitrqr=r=r>rjs z%Random._randbelow_without_getrandbitscCs ||d|dS)Nlittle)rto_bytesr;ror=r=r>r$szRandom.randbytesc Cs zt|}Wn!ty(t|}||kr tdtdtdtdtdYnw|durB|tur5td|dkr>||Stdzt|}Wn!tyit|}||kratdtdtdtdtdYnw||}zt|}Wn!tyt|}||krtdtdtd tdtdYnw|d kr|dkr|||Std |||f|dkr||d |}n|dkr||d |}ntd |dkrtd||||S) Nz.randrange() will raise TypeError in the futurer6z!non-integer arg 1 for randrange()zwnon-integer arguments to randrange() have been deprecated since Python 3.10 and will be removed in a subsequent versionz Missing a non-None stop argumentrzempty range for randrange()z non-integer stop for randrange()z non-integer step for randrange()r7z(empty range for randrange() (%d, %d, %d)zzero step for randrange())_indexrarMrRrSr`_ONErf) r;startstopstepZistartZistopwidthZistepror=r=r>r'$sv          zRandom.randrangecCs |||dS)Nr7)r'r;rUbr=r=r>r%nszRandom.randintcCs ||t|Sr9)rfrJ)r;seqr=r=r>rwsz Random.choicecCs |dur)|j}ttdt|D]}||d}||||||<||<qdStdtdt}ttdt|D]}|||d}||||||<||<q:dS)Nr7zuThe *random* parameter to shuffle() has been deprecated since Python 3.9 and will be removed in a subsequent version.r6)rfreversedrangerJrRrSrr)r;r<r& randbelowijr r=r=r>r+|s zRandom.shuffle)countscs ttsttrtdtdtntdt}|dur]tt |t|kr2t d }t|t s?td|dkrGt d|j t||d}tfd d |DS|j}d|krm|ksrt d t d dg|}d } |d kr| dtt|dd7} || krt} t|D]} ||| } | | || <| || d| | <q|St} | j}t|D]} ||} | | vr||} | | vs|| | || <q|S)Nz\Sampling from a set deprecated since Python 3.9 and will be removed in a subsequent version.r6zAPopulation must be a sequence. For dicts or sets, use sorted(d).z2The number of counts does not match the populationzCounts must be integersrz)Total of counts must be greater than zero)rpcsg|] }|qSr=r=)r]srZ cum_counts populationr=r> sz!Random.sample..z,Sample larger than population or is negativer0r8r7)rD _Sequence_SetrRrSr_rarJlist _accumulater`poprMr(r_bisectrf_ceil_logsetadd)r;rrprrototalZ selectionsrresultZsetsizeZpoolrrZselectedZ selected_addr=rr>r(s^ 4           z Random.sample) cum_weightsrpcs |jtdurE|dur%td7fddtd|DSztt|WntyDt|ts:|}td|dw|durMtdtkrWt ddddkret dt smt d t d fd dtd|DS) Ncsg|] }qSr=r=r]r)r rorr&r=r>rsz"Random.choices..z4The number of choices must be a keyword argument: k=z2Cannot specify both weights and cumulative weightsz3The number of weights does not match the populationrAz*Total of weights must be greater than zerozTotal of weights must be finiter7cs$g|]}dqS)rr=r)rrhirr&rr=r>rs) r&rJrr_repeatrrrarDrMr` _isfiniter)r;rZweightsrrpr=)rrr rrorr&rr>rsD    zRandom.choicescCs ||||Sr9r&rr=r=r>r-"r\zRandom.uniformrr3cCs| |}z|dur dn||||}Wn ty |YSw||kr2d|}d|}||}}|||t||S)N?r3)r&ZeroDivisionError_sqrt)r;lowhighmodeurWr=r=r>r,&s   zRandom.triangularcCsT |j} |}d|}t|d|}||d}|t| kr#nq|||S)NTr3rr2)r& NV_MAGICCONSTr)r;musigmar&u1u2zZzzr=r=r>r":s    zRandom.normalvariatecCsb |j}|j}d|_|dur+|t}tdtd|}t||}t|||_|||S)Ngr3)r&r:TWOPIrr_cos_sin)r;rrr&rZx2piZg2radr=r=r>rOs   z Random.gausscCs t|||Sr9)_expr")r;rrr=r=r>r!uszRandom.lognormvariatecCs td| |SNr3)rr&)r;Zlambdr=r=r>rszRandom.expovariatecCs |j}|dkr t|Sd|}|td||} |}tt|}|||}|} | d||ks@| d|t|krAnqd|} | |d| |} |} | dkra|t| t} | S|t| t} | S)Ngư>rr3)r&rrr_pir_acos)r;rZkappar&rrqrrdrqfZu3Zthetar=r=r>r.s,   $ zRandom.vonmisesvariatecCs| |dks |dkr td|j}|dkrltd|d}|t}||} |}d|kr2dks4nq$d|}t|d||} |t| } |||} ||| | } | td| dksg| t| krk| |Sq%|dkrztd| |S |} t|t}|| }|dkr|d|} n t||| } |}|dkr|| |dkr | |Sn |t| kr | |Sq{) Nrz*gammavariate: alpha and beta must be > 0.0r3r1TgHz>gP?r4)r`r&rLOG4rr SG_MAGICCONST_e)r;alphabetar&ZainvZbbbZcccrrvr<rrqrrpr=r=r>rsN      zRandom.gammavariatecCs* ||d}|r||||dSdS)Nr3r)r)r;rryr=r=r>rs  zRandom.betavariatecCs d|}|d|S)Nr3gr)r;rrr=r=r>r#s  zRandom.paretovariatecCs$ d|}|t| d|Sr)r&r)r;rrrr=r=r>r/s zRandom.weibullvariater9)Nr6)rr3N)$__name__ __module__ __qualname__rZr?r)r r*rcrdrermriBPFrjrfr$rzr'r%rr+r(rr-r,r"rr!rr.rrr#r/ __classcell__r=r=rXr>rgs@  * !  J d( & *Arc@s>eZdZ ddZddZddZddZd d ZeZZ d S) rcCs ttddd?tS)Nr@rCr8)rMrN_urandom RECIP_BPFr[r=r=r>r&6szSystemRandom.randomcCs> |dkr td|dd}tt|d}||d|?S)Nrz#number of bits must be non-negativer@rurC)r`rMrNr)r;rpZnumbytesr<r=r=r>r:s  zSystemRandom.getrandbitscCs t|Sr9)rrxr=r=r>r$BszSystemRandom.randbytescOs dSr9r=r;argskwdsr=r=r>r)HszSystemRandom.seedcOs td)Nz*System entropy source does not have state.)NotImplementedErrorrr=r=r>_notimplementedLszSystemRandom._notimplementedN) rrrr&rr$r)rr r*r=r=r=r>r-s rc sddlm}m}ddlm}|}fddtd|D}|}||} ||| } t|} t|} t||dd|dj td | | | | fdS) Nr)stdevfmean) perf_countercsg|]}qSr=r=rrfuncr=r>r{sz#_test_generator..z.3fz sec, z times z"avg %g, stddev %g, min %g, max %g ) Z statisticsrrtimerrminmaxprintr) rorrrZmeanrZt0datat1Zxbarrrrr=rr>_test_generatorvs   rcCst|tdt|tdt|tdt|tdt|tdt|tdt|tdt|tdt|tdt|tdt|td t|td t|td t|tdt|td t|td dS)Nr=)rr3)g{Gz?r3)皙?r3)rr1)rr3)g?r3)r3r3)r1r3)g4@r3)gi@r3)@r)rr3gUUUUUU?) rr&r"r!r.rrrr,)Nr=r=r>_tests               rfork)Zafter_in_child__main__)r)ZwarningsrrRZmathrrrrrrrrrrrrr rr rr rr rr rrrrosrr_collections_abcrrrroperatorrry itertoolsrrrrrr_osZ_randomrOr ImportErrorZhashlib__all__rrrrrrzrrZ_instr)r&r-r,r%rr'r(r+rr"r!rr.rrrr#r/r r*rr$rrhasattrregister_at_forkrr=r=r=r>s| /      K,