o 0¦iÅ�ã@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 edƒedƒZ5edƒZ6dedƒZ7dZ8de8 Z9dZ:Gdd„de/j;ƒZ;Gdd„de;ƒ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=jTZTdd„ZUd"dd„ZVeWe.dƒrüe.jXe=j>d �eYd!k�reVƒd Sd S)#é)Úwarn)ÚlogÚexpÚpiÚeÚceil)ÚsqrtÚacosÚcosÚsin)ÚtauÚfloorÚisfinite)Úurandom)ÚSetÚSequence)Úindex)Ú accumulateÚrepeat)ÚbisectN)Úsha512)ÚRandomÚ SystemRandomÚ betavariateÚchoiceÚchoicesÚ expovariateÚ gammavariateÚgaussÚ getrandbitsÚgetstateÚlognormvariateÚ normalvariateÚ paretovariateÚ randbytesÚrandintÚrandomÚ randrangeÚsampleÚseedÚsetstateÚshuffleÚ triangularÚuniformÚvonmisesvariateÚweibullvariateégà¿ç@ç@çð?ç@é5éécs,eZdZ dZdAdd„ZdB‡fdd„ Z‡fdd „Z‡fd d „Zd d „Zdd„Z dd„Z dd„Z dd„Z de >fdd„Ze Zdd„Zdefdd„Zdd„Zdd „ZdAd!d"„Zdd#œd$d%„ZdAddd&œd'd(„Zd)d*„ZdCd-d.„Zd/d0„Zd1d2„Zd3d4„Zd5d6„Zd7d8„Zd9d:„Zd;d<„Z d=d>„Z!d?d@„Z"‡Z#S)DréNcCs | |¡d|_dS©N)r)Ú gauss_next)ÚselfÚx©r=ú-/opt/alt/python310/lib64/python3.10/random.pyÚ__init__ws  zRandom.__init__r6cs |dkrCt|ttfƒrCt|tƒr| d¡n|}|r"t|dƒd>nd}tt|ƒD] }d||Ad@}q)|t|ƒN}|dkr@dn|}n5|d kret|tttfƒret|tƒrX| ¡}t   |t |ƒ  ¡d ¡}nt|t dƒt ttttfƒsxtd td ƒtƒ |¡d|_dS) Nr7zlatin-1réiCBlÿÿÿÿéÿÿÿÿéþÿÿÿr6ÚbigzµSeeding 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.)Ú isinstanceÚstrÚbytesÚdecodeÚordÚmapÚlenÚ bytearrayÚencodeÚintÚ from_bytesÚ_sha512ZdigestÚtypeÚfloatÚ_warnÚDeprecationWarningÚsuperr)r:)r;ÚaÚversionr<Ú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>Ú »s€z"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)ÚclsÚkwargsrWr=r=r>Ú__init_subclass__Ûs    þùzRandom.__init_subclass__cCs< |sdS|j}| ¡}||ƒ}||kr||ƒ}||ks|S)Nr)rÚ bit_length)r;ÚnrÚkÚrr=r=r>riïsÿz"Random._randbelow_with_getrandbitsr7cCsr |j}||krtdƒt|ƒ|ƒS|dkrdS||}|||}|ƒ}||kr1|ƒ}||ks*t||ƒ|S)Nz¤Underlying 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;roÚmaxsizer&ZremÚlimitrqr=r=r>rjûs ÿz%Random._randbelow_without_getrandbitscCs | |d¡ |d¡S)NéÚlittle)rÚto_bytes©r;ror=r=r>r$szRandom.randbytesc Csº zt|ƒ}Wn!ty(t|ƒ}||kr tdtdƒtdƒ‚tdtdƒYnw|durB|tur5tdƒ‚|dkr>| |¡Stdƒ‚zt|ƒ}Wn!tyit|ƒ}||kratdtdƒtdƒ‚tdtdƒYnw||}zt|ƒ}Wn!ty•t|ƒ}||kr�tdtdƒtd ƒ‚tdtdƒYnw|d kr®|dkr¥|| |¡Std |||fƒ‚|dkr»||d |}n|dkrÈ||d |}ntd ƒ‚|dkrÔtdƒ‚||| |¡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;ÚstartÚstopÚstepZistartZistopÚwidthZistepror=r=r>r'$sv  ÿýú    ÿýú   ÿýú zRandom.randrangecCs | ||d¡S)Nr7)r'©r;rUÚbr=r=r>r%nszRandom.randintcCs || t|ƒ¡Sr9)rfrJ)r;Úseqr=r=r>rwsz Random.choicecCsª |dur)|j}ttdt|ƒƒƒD]}||dƒ}||||||<||<qdStdtdƒt}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)rfÚreversedÚrangerJrRrSrr)r;r<r&Ú randbelowÚiÚjr r=r=r>r+|s ýýýzRandom.shuffle)Úcountscs´ tˆtƒstˆtƒrtdtdƒtˆƒ‰ntdƒ‚tˆƒ}|dur]tt |ƒƒ‰tˆƒ|kr2t dƒ‚ˆ  ¡}t|t ƒs?tdƒ‚|dkrGt dƒ‚|j t|ƒ|d�}t‰‡‡‡fd d „|DƒS|j}d|krm|ksrt d ƒ‚t d ƒ‚dg|}d } |d krŠ| dtt|ddƒƒ7} || kr±tˆƒ} 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]Ús©rZ cum_countsÚ populationr=r>Ú ßsz!Random.sample..z,Sample larger than population or is negativeéér0r8r7)rDÚ _SequenceÚ_SetrRrSr_rarJÚlistÚ _accumulater`ÚpoprMr(rƒÚ_bisectrfÚ_ceilÚ_logÚsetÚadd)r;rŠrpr‡roÚtotalZ selectionsr„ÚresultZsetsizeZpoolr…r†ZselectedZ selected_addr=r‰r>r(–s^ 4 þ    ÿ     ø ÿz Random.sample)Ú cum_weightsrpcs |j‰tˆƒ‰ˆdurE|dur%t‰ˆd7‰‡‡‡‡fdd„td|ƒDƒSztt|ƒƒ‰WntyDt|tƒs:‚|}td|›�ƒd‚w|durMtdƒ‚tˆƒˆkrWt dƒ‚ˆdd‰ˆdkret dƒ‚t ˆƒsmt d ƒ‚t ‰ˆd ‰‡‡‡‡‡‡fd d„td|ƒDƒS) Nçcsg|] }ˆˆˆƒˆƒ‘qSr=r=©r]r…)r rorŠr&r=r>r‹sz"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|]}ˆˆˆˆƒˆdˆƒ‘qS)rr=rœ)rršÚhirŠr&r˜r=r>r‹sÿ) r&rJrrÚ_repeatr�r‘rarDrMr`Ú _isfiniter“)r;rŠZweightsršrpr=)rršr r�rorŠr&r˜r>rúsD  ÿþü  ÿzRandom.choicescCs |||| ¡Sr9©r&rr=r=r>r-"r\zRandom.uniformr›r3cCs| | ¡}z|dur dn||||}Wn ty |YSw||kr2d|}d|}||}}|||t||ƒS)Nçà?r3)r&ÚZeroDivisionErrorÚ_sqrt)r;ÚlowÚhighÚmodeÚurWr=r=r>r,&s  ÿ zRandom.triangularcCsT |j} |ƒ}d|ƒ}t|d|}||d}|t|ƒ kr#nq|||S)NTr3r¡r2)r&Ú NV_MAGICCONSTr•)r;ÚmuÚsigmar&Úu1Úu2ÚzZzzr=r=r>r":s   ú zRandom.normalvariatecCsb |j}|j}d|_|dur+|ƒt}tdtd|ƒƒƒ}t|ƒ|}t|ƒ||_|||S)NgÀr3)r&r:ÚTWOPIr£r•Ú_cosÚ_sin)r;r©rªr&r­Zx2piZg2radr=r=r>rOs   z Random.gausscCs t| ||¡ƒSr9)Ú_expr")r;r©rªr=r=r>r!uszRandom.lognormvariatecCs td| ¡ƒ |S©Nr3)r•r&)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�íµ ÷ư>r¡r3)r&r®r£r¯Ú_pir±Ú_acos)r;r©Zkappar&rˆrqr«r­Údr¬ÚqÚfZu3Zthetar=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{) Nr›z*gammavariate: alpha and beta must be > 0.0r3r1TgH¯¼šò×z>gËPÊÿÿï?r4)r`r&r£ÚLOG4r•r±Ú SG_MAGICCONSTÚ_e)r;ÚalphaÚbetar&ZainvZbbbZcccr«r¬Úvr<r­rqr§r€Úpr=r=r>rºsN    ö  üòzRandom.gammavariatecCs* | |d¡}|r||| |d¡SdS)Nr3r›)r)r;r»r¼Úyr=r=r>rûs  zRandom.betavariatecCs d| ¡}|d|S)Nr3gð¿r )r;r»r§r=r=r>r#s  zRandom.paretovariatecCs$ d| ¡}|t|ƒ d|Sr²)r&r•)r;r»r¼r§r=r=r>r/s zRandom.weibullvariater9)Nr6)r›r3N)$Ú__name__Ú __module__Ú __qualname__rZr?r)r r*rcrdrermriÚBPFrjrfr$rzr'r%rr+r(rr-r,r"rr!rr.rrr#r/Ú __classcell__r=r=rXr>rgs@  * !  J d( & *Arc@s>eZdZ dd„Zdd„Zdd„Zdd„Zd d „ZeZZ d S) rcCs t tdƒd¡d?tS)Nr@rCr8)rMrNÚ_urandomÚ RECIP_BPFr[r=r=r>r&6szSystemRandom.randomcCs> |dkr tdƒ‚|dd}t t|ƒ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)rÅrxr=r=r>r$BszSystemRandom.randbytescOs dSr9r=©r;ÚargsÚkwdsr=r=r>r)HszSystemRandom.seedcOs tdƒ‚)Nz*System entropy source does not have state.)ÚNotImplementedErrorrÇr=r=r>Ú_notimplementedLszSystemRandom._notimplementedN) rÀrÁrÂr&rr$r)rËr r*r=r=r=r>r-s rc sœddlm}m}ddlm}|ƒ}‡‡fdd„td|ƒDƒ}|ƒ}||ƒ} ||| ƒ} t|ƒ} t|ƒ} t||d›d|›dˆj ›�ƒtd | | | | fƒdS) Nr)ÚstdevÚfmean)Ú perf_countercsg|]}ˆˆŽ‘qSr=r=rœ©rÈÚfuncr=r>r‹{sz#_test_generator..z.3fz sec, z times z"avg %g, stddev %g, min %g, max %g ) Z statisticsrÌrÍÚtimerÎržÚminÚmaxÚprintrÀ) rorÐrÈrÌZmeanrÎZt0ÚdataÚt1Zxbarrªr¤r¥r=rÏr>Ú_test_generatorvs   r×éÐcCsÄt|tdƒt|tdƒt|tdƒt|tdƒt|tdƒt|tdƒt|tdƒt|tdƒt|tdƒt|tdƒt|td ƒt|td ƒt|td ƒt|tdƒt|td ƒt|td ƒdS)Nr=)r›r3)g{®Gáz„?r3)çš™™™™™¹?r3)rÙr1)r¡r3)gÍÌÌÌÌÌì?r3)r3r3)r1r3)g4@r3)gi@r3)ç@rÚ)r›r3gUUUUUUÕ?) r×r&r"r!r.rrrr,)ÚNr=r=r>Ú_test‡s               rÜÚfork)Zafter_in_childÚ__main__)rØ)ZÚwarningsrrRZmathrr•rr±rr³rrºrr”rr£r r´r r¯r r°r r®r rrrrŸÚosrrÅÚ_collections_abcrr�rrŽÚoperatorrryÚ itertoolsrr‘rržrr“Ú_osZ_randomrOrÚ ImportErrorZhashlibÚ__all__r¨r¸r¹rÃrÆrzrrZ_instr)r&r-r,r%rr'r(r+rr"r!rr.rrrr#r/r r*rr$r×rÜÚhasattrÚregister_at_forkrÀr=r=r=r>Ús| /    þ  K,    ÿ