grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026 й¼]_gã@svddlmZddlmZmZddlm Z m Z m ZmZmZddlmZmZmZmZddlmZddlmZ m!Z"ddl#m$Z%dd d d d d dddddddddddddddddgZ&de d ƒed!ƒZ'd!eZ(e d"ƒZ)d#e d$ƒZ*d%Z+d&e+ Z,dd'l-Z-Gd(d„de-j.ƒZ.Gd)d„de.ƒZ/d*d+„Z0d,d-d.„Z1e.ƒZ2e2j3Z3e2j4Z4e2j5Z5e2j6Z6e2j7Z7e2j8Z8e2j9Z9e2j:Z:e2j;Z;e2j<Z<e2j=Z=e2j>Z>e2j?Z?e2j@Z@e2jAZAe2jBZBe2jCZCe2jDZDe2jEZEe2jFZFe2jGZGeHd/krre1ƒd'S)0é)Úwarn)Ú MethodTypeÚBuiltinMethodType)ÚlogÚexpÚpiÚeÚceil)ÚsqrtÚacosÚcosÚsin)Úurandom)ÚSetÚSequence)Úsha512ÚRandomÚseedÚrandomÚuniformÚrandintÚchoiceÚsampleÚ randrangeÚshuffleÚ normalvariateÚlognormvariateÚ expovariateÚvonmisesvariateÚ gammavariateÚ triangularÚgaussÚ betavariateÚ paretovariateÚweibullvariateÚgetstateÚsetstateÚ getrandbitsÚ SystemRandomégà?g@g@gð?g@é5éNcsyeZdZdZddd„Zdd‡fdd†Z‡fdd †Z‡fd d †Zd d „Zdd„Z dd„Z dde dd„Z dd„Z e de>eeedd„Zdd„Zddd„Zdd„Zdd „Zd!d"dd#d$„Zd%d&„Zd'd(„Zd)d*„Zd+d,„Zd-d.„Zd/d0„Zd1d2„Zd3d4„Zd5d6„Z ‡S)7réNcCs|j|ƒd|_dS)N)rÚ gauss_next)ÚselfÚx©r0ú+/opt/alt/python35/lib64/python3.5/random.pyÚ__init__Ts zRandom.__init__r+c su|dkr_ytjtdƒdƒ}Wn4tk r^ddl}t|jƒdƒ}YnX|dkrñt|ttfƒrñ|ršt|dƒd>nd}x&|D]}d|t|ƒAd@}q§W|t |ƒN}|d krëd n|}|d krXt|ttt fƒrXt|tƒr0|j ƒ}|t |ƒj ƒ7}tj|dƒ}tƒj|ƒd|_dS) NiÄ ÚbigréééiCBlÿÿÿÿr+éÿÿÿÿéþÿÿÿ)ÚintÚ from_bytesÚ_urandomÚNotImplementedErrorÚtimeÚ isinstanceÚstrÚbytesÚordÚlenÚ bytearrayÚencodeÚ_sha512ÚdigestÚsuperrr-)r.ÚaÚversionr=r/Úc)Ú __class__r0r1r]s(   !    z Random.seedcs|jtƒjƒ|jfS)N)ÚVERSIONrGr%r-)r.)rKr0r1r%†szRandom.getstatecs×|d}|dkr;|\}}|_tƒj|ƒn˜|dkrº|\}}|_ytdd„|Dƒƒ}Wn.tk r¦}zt|‚WYdd}~XnXtƒj|ƒntd||jfƒ‚dS)Nrr,r+css|]}|dVqdS)r+é Nlr0)Ú.0r/r0r0r1ú —sz"Random.setstate..z?state with version %s passed to Random.setstate() of version %s)r-rGr&ÚtupleÚ ValueErrorÚ TypeErrorrL)r.ÚstaterIÚ internalstater)rKr0r1r&Šs   zRandom.setstatecCs |jƒS)N)r%)r.r0r0r1Ú __getstate__¨szRandom.__getstate__cCs|j|ƒdS)N)r&)r.rSr0r0r1Ú __setstate__«szRandom.__setstate__cCs|jf|jƒfS)N)rKr%)r.r0r0r1Ú __reduce__®szRandom.__reduce__r5c Csp||ƒ}||kr$tdƒ‚|dkrU|dkrI|j|ƒStdƒ‚||ƒ}||krytdƒ‚||}|dkr¬|dkr¬||j|ƒS|dkrÑtd|||fƒ‚||ƒ}||krõtdƒ‚|dkr||d|} n-|dkr7||d|} n tdƒ‚| dkr[tdƒ‚|||j| ƒS) Nz!non-integer arg 1 for randrange()rzempty range for randrange()z non-integer stop for randrange()r5z'empty range for randrange() (%d,%d, %d)z non-integer step for randrange()zzero step for randrange())rQÚ _randbelow) r.ÚstartÚstopÚstepÚ_intÚistartÚistopÚwidthÚistepÚnr0r0r1r³s4                    zRandom.randrangecCs|j||dƒS)Nr5)r)r.rHÚbr0r0r1rßszRandom.randintc Csç|j}|j}||ƒ|ks6||ƒ|krq|jƒ} || ƒ} x| |krl|| ƒ} qQW| S||kr˜tdƒ||ƒ|ƒS||} || |} |ƒ} x| | krÔ|ƒ} q¼W|| |ƒ|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.)rr'Ú bit_lengthÚ_warn) r.rar9ÚmaxsizeÚtypeÚMethodÚ BuiltinMethodrr'ÚkÚrÚremÚlimitr0r0r1rXås"  $       zRandom._randbelowc CsBy|jt|ƒƒ}Wntk r9tdƒ‚YnX||S)Nz$Cannot choose from an empty sequence)rXrBrQÚ IndexError)r.ÚseqÚir0r0r1rs  z Random.choicecCsÏ|dkrk|j}x³ttdt|ƒƒƒD]3}||dƒ}||||||<||Population must be a sequence or set. For dicts, use list(d).rzSample larger than populationéér)r,r5)r>Ú_SetrPÚ _SequencerRrXrBrQÚ_ceilÚ_logÚlistrqÚsetÚadd) r.Ú populationrirrraÚresultÚsetsizeÚpoolrorsÚselectedÚ selected_addr0r0r1r!s6       !      z Random.samplecCs||||jƒS)N)r)r.rHrbr0r0r1r_szRandom.uniformggð?c Cs’|jƒ}y(|dkr!dn||||}Wntk rL|SYnX||krzd|}d|}||}}|||||dS)Ngà?gð?)rÚZeroDivisionError)r.ÚlowÚhighÚmodeÚurJr0r0r1r es (      zRandom.triangularcCsf|j}xN|ƒ}d|ƒ}t|d|}||d}|t|ƒ kr Pq W|||S)Ngð?gà?g@)rÚ NV_MAGICCONSTry)r.ÚmuÚsigmarÚu1Úu2ÚzÚzzr0r0r1r{s   zRandom.normalvariatecCst|j||ƒƒS)N)Ú_expr)r.r‰rŠr0r0r1r”szRandom.lognormvariatecCstd|jƒƒ |S)Ngð?)ryr)r.Úlambdr0r0r1r szRandom.expovariatecCs |j}|dkr t|ƒSd|}|td||ƒ}xc|ƒ}tt|ƒ}|||}|ƒ} | d||ks£| d|t|ƒkrEPqEWd|} | |d| |} |ƒ} | dkrô|t| ƒt} n|t| ƒt} | S)Ng�íµ ÷ư>gà?gð?)rÚTWOPIÚ_sqrtÚ_cosÚ_pir�Ú_acos)r.r‰ÚkapparÚsrjr‹r�ÚdrŒÚqÚfÚu3Úthetar0r0r1r³s&      .   zRandom.vonmisesvariatecCs|dks|dkr$tdƒ‚|j}|dkrtd|dƒ}|t}||}x™|ƒ}d|ko„dknsŒqdd|ƒ}t|d|ƒ|} |t| ƒ} |||} ||| | } | td| dks | t| ƒkrd| |SqdWnã|dkrZ|ƒ} x| dkrJ|ƒ} q2Wt| ƒ |Sx˜|ƒ} t|t}|| }|dkr›|d|} nt|||ƒ } |ƒ}|dkrÝ|| |dkrñPq]|t| ƒkr]Pq]W| |SdS)Ngz*gammavariate: alpha and beta must be > 0.0gð?g@gH¯¼šò×z>gËPÊÿÿï?g@)rQrr’ÚLOG4ryr�Ú SG_MAGICCONSTÚ_e)r.ÚalphaÚbetarÚainvÚbbbÚcccr‹rŒÚvr/r�rjr‡rbÚpr0r0r1rãsJ       *        zRandom.gammavariatecCs€|j}|j}d|_|dkrt|ƒt}tdtd|ƒƒƒ}t|ƒ|}t|ƒ||_|||S)Ng@gð?gÀ)rr-r‘r’ryr“Ú_sin)r.r‰rŠrr�Úx2piÚg2radr0r0r1r!+s     z Random.gausscCs>|j|dƒ}|dkr"dS|||j|dƒSdS)Ngð?rg)r)r.r r¡Úyr0r0r1r"`s  zRandom.betavariatecCs d|jƒ}d|d|S)Ngð?)r)r.r r‡r0r0r1r#rszRandom.paretovariatecCs'd|jƒ}|t|ƒ d|S)Ngð?)rry)r.r r¡r‡r0r0r1r${szRandom.weibullvariate)!Ú__name__Ú __module__Ú __qualname__rLr2rr%r&rUrVrWr9rrÚBPFrfÚ _MethodTypeÚ_BuiltinMethodTyperXrrrrr rrrrrr!r"r#r$r0r0)rKr1rDs4  )   ,    >    0 H 5  c@sJeZdZdd„Zdd„Zdd„Zdd„ZeZZd S) r(cCstjtdƒdƒd?tS)Nr6r3r,)r9r:r;Ú RECIP_BPF)r.r0r0r1r�szSystemRandom.randomcCsl|dkrtdƒ‚|t|ƒkr6tdƒ‚|dd}tjt|ƒdƒ}||d|?S)Nrz(number of bits must be greater than zeroz#number of bits should be an integerr6ér3)rQr9rRr:r;)r.riÚnumbytesr/r0r0r1r'”s   zSystemRandom.getrandbitscOsdS)Nr0)r.ÚargsÚkwdsr0r0r1ržszSystemRandom.seedcOstdƒ‚dS)Nz*System entropy source does not have state.)r<)r.r´rµr0r0r1Ú_notimplemented¢szSystemRandom._notimplementedN) r«r¬r­rr'rr¶r%r&r0r0r0r1r(ˆs    cCsddl}t|d|jƒd}d}d}d }|jƒ}xVt|ƒD]H} ||Œ} || 7}|| | }t| |ƒ}t| |ƒ}qPW|jƒ} tt| |dƒdddƒ||} t||| | ƒ} td | | ||fƒdS) NrÚtimesgg _ Br,zsec,Úendú z"avg %g, stddev %g, min %g, max %g g _ Â)r=Úprintr«rqÚminÚmaxÚroundr’)raÚfuncr´r=ÚtotalÚsqsumÚsmallestÚlargestÚt0ror/Út1ÚavgÚstddevr0r0r1Ú_test_generator©s&       rÇiÐcCst|tfƒ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)Nççð?ç{®Gáz„?çš™™™™™¹?ç@çà?çÍÌÌÌÌÌì?ç4@çi@ç@)rÈrÉ)rÈrÉ)rÈrÉ)rÊrÉ)rËrÉ)rËrÌ)rÍrÉ)rÎrÉ)rÉrÉ)rÌrÉ)rÏrÉ)rÐrÉ)rÈrÉ)rÑrÑçUUUUUUÕ?)rÈrÉrÒ) rÇrrrrrr!r"r )ÚNr0r0r1Ú_test¿s rÔÚ__main__)IÚwarningsrrdÚtypesrr¯rr°Úmathrryrr�rr”rrŸr rxr r’r r•r r“r r§Úosrr;Ú_collections_abcrrvrrwÚhashlibrrEÚ__all__rˆr‘r�ržr®r±Ú_randomrr(rÇrÔÚ_instrrrr rrrrrrrrrrr!r"r#r$r%r&r'r«r0r0r0r1Ú'sb("         ÿÿF!