ezSrSSKJrJrJrJr J r SSKJ r JrJrJr SSKJrJrJr SSKJrJrJr SSK J!r" SSK#J$r% SSK&J'r( SS K)J*r+J,r- SS K.J.r/ SS K r0SS K1r1/S Qr2S \"S5-\ "S5- r3\"S5r4S\"S5-r5Sr6S\6*-r7Sr8S q9"SS\1Rt5r:"SS\:5r;\:"5r<\\US:Xa[U[[45(a}[U[5(aURS5OUnU(a[ US5S-OSn[ [U5HnSU-U- S-nM U[ U5-nUS:XaSOUnOUS :Xa[U[[[45(ac[cSS K J q [U[5(aUR5n[RU[U5R!5-5nO?[U[#S 5[[$[[[45(d ['S 5e[(TU]UU5 S Ulg ![a SS K J q Nf=f) a Initialize internal state from a seed. The only supported seed types are None, int, float, str, bytes, and bytearray. None or no argument seeds from current time or from an operating system specific randomness source if available. If *a* is an int, all bits are used. For version 2 (the default), all of the bits are used if *a* is a str, bytes, or bytearray. For version 1 (provided for reproducing random sequences from older versions of Python), the algorithm for str and bytes generates a narrower range of seeds. r9zlatin-1riCBlr8N)sha512zOThe only supported seed types are: None, int, float, str, bytes, and bytearray.) isinstancestrbytesdecodeordmaplen bytearray_sha512_sha2rI ImportErrorhashlibencodeint from_bytesdigesttypefloat TypeErrorsuperr+r>)r?aversionr@c __class__s rAr+ Random.seedsI$ aUR[TU] 5UR4$)z9Return internal state; can be passed to setstate() later.)VERSIONr]r"r>)r?ras rAr"Random.getstates ||UW-/@@rDc >USnUS:XaUup#Ul[TU] U5 gUS:Xa-Uup#Ul[SU55n[TU] U5 g[ SU<SUR <35e![a n[ UeSnAff=f)z:Restore internal state from object returned by getstate().rr<r8c3*# UH oS-v M g7f)lN).0r@s rA "Random.setstate..s%K]7m]sNzstate with version z( passed to Random.setstate() of version )r>r]r,tuple ValueErrorr\rd)r?stater_ internalstaterras rAr,Random.setstates( a<6; 3GDO G ] + \6; 3GDO  ' %%K]%K K  G ] +%t||56 6  'Q& 'sA77 B BB c"UR5$N)r"r?s rA __getstate__Random.__getstate__s}}rDc&URU5 grr)r,)r?rns rA __setstate__Random.__setstate__s erDc<URSUR54$)Nrh)rar"rss rA __reduce__Random.__reduce__s~~r4==?22rDc URH[nSUR;a gSUR;aURUl gSUR;dMJURUl g g)zControl how subclasses generate random integers. The algorithm a subclass can use depends on the random() and/or getrandbits() implementation available to it and determines whether it can generate random integers from arbitrarily large ranges. _randbelowr!r(N)__mro____dict___randbelow_with_getrandbitsr}_randbelow_without_getrandbits)clskwargsr`s rA__init_subclass__Random.__init_subclass__sYAqzz) *!$!@!@1::%!$!C!CrDcvURnUR5nU"U5nXA:aU"U5nXA:aMU$)z;Return a random int in the range [0,n). Defined for n > 0.)r! bit_length)r?nr!krs rAr"Random._randbelow_with_getrandbitss=&& LLN NfAAfrDr9cURnX:a!SSKJn U"S5 [U"5U-5$X!-nX%- U- nU"5nXv:aU"5nXv:aM[Xr-5U-$)z{Return a random int in the range [0,n). Defined for n > 0. The implementation does not use getrandbits, but only random. r)warnzUnderlying 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(warningsr_floor)r?rmaxsizer(rremlimitrs rAr%Random._randbelow_without_getrandbitssv  < % O P&(Q,' 'k') HjAjak"Q&&rDcJURUS-5RUS5$)Generate n random bytes.little)r!to_bytesr?rs rAr&Random.randbytes s$A&//8<??U5\Q7JF?IJz!vj45zJ JOO A{{KL L! q5 qE$q1ua.11 1G < #D1Xae$ G 1uqy/ uH#<? ? U q)+)A6+vx%/?BGH)+ ++S !'3//KM  $+sDD!D=3D:c2XU- UR5--$)zGet a random number in the range [a, b) or [a, b] depending on rounding. The mean (expected value) and variance of the random variable are: E[X] = (a + b) / 2 Var[X] = (b - a) ** 2 / 12 r(rs rAr/Random.uniformsET[[]***rDcUR5nUcSOX1- X!- - nXE:a SU- nSU- nX!p!XU- [XE-5--$![a Us$f=f)auTriangular distribution. Continuous distribution bounded by given lower and upper limits, and having a given mode value in-between. http://en.wikipedia.org/wiki/Triangular_distribution The mean (expected value) and variance of the random variable are: E[X] = (low + high + mode) / 3 Var[X] = (low**2 + high**2 + mode**2 - low*high - low*mode - high*mode) / 18 ?r5)r(ZeroDivisionError_sqrt)r?lowhighmodeur`s rAr.Random.triangularst KKM |$*)DA 5aAaASjE!%L000 ! J sA AAcURnU"5nSU"5- n[US- -U- nXf-S- nU[U5*::aOM:XU--$)zLNormal distribution. mu is the mean, and sigma is the standard deviation. r5rr4)r( NV_MAGICCONSTr)r?musigmar(u1u2zzzs rAr$Random.normalvariatescBvxBc*R/ABd2hY I~rDcURnURnSUlUcNU"5[-n[S[ SU"5- 5-5n[ U5U-n[ U5U-UlXU--$)zGaussian distribution. mu is the mean, and sigma is the standard deviation. This is slightly faster than the normalvariate() function. Not thread-safe without a lock around calls. Ngr5)r(r>TWOPIrr_cos_sin)r?rrr(rx2pig2rads rAr Random.gauss+sr6 OO 98e#D$cFHn!556ET U"A"4j50DOI~rDc6[URX55$)zLog normal distribution. If you take the natural logarithm of this distribution, you'll get a normal distribution with mean mu and standard deviation sigma. mu can have any value, and sigma must be greater than zero. )_expr$)r?rrs rAr#Random.lognormvariateQsD&&r122rDcB[SUR5- 5*U- $)aExponential distribution. lambd is 1.0 divided by the desired mean. It should be nonzero. (The parameter would be called "lambda", but that is a reserved word in Python.) Returned values range from 0 to positive infinity if lambd is positive, and from negative infinity to 0 if lambd is negative. The mean (expected value) and variance of the random variable are: E[X] = 1 / lambd Var[X] = 1 / lambd ** 2 r5)rr()r?lambds rArRandom.expovariate[s"$S4;;=())E11rDcURnUS::a[U"5-$SU- nU[SXD--5-nU"5n[[U-5nXuU-- nU"5n U SX-- :dU SU- [ U5-::aOMJSU- n X-SX--- n U"5n U S:aU[ U 5-[-n U $U[ U 5- [-n U $)aCircular data distribution. mu is the mean angle, expressed in radians between 0 and 2*pi, and kappa is the concentration parameter, which must be greater than or equal to zero. If kappa is equal to zero, this distribution reduces to a uniform random angle over the range 0 to 2*pi. gư>rr5)r(rrr_pir_acos)r?rkappar(rrrrdrqfu3thetas rAr0Random.vonmisesvariateos  D=68# # %K cAEk" "BS2XAU ABC!%K2#'T!W)<#< !G UsQU{ # X 8%(]e+E %(]e+E rDcUS::dUS::a [S5eURnUS:a[SU-S- 5nU[- nX-nU"5nSUs=:aS:dO MSU"5- n[ USU- - 5U- n U[ U 5-n Xw-U-n XVU --U - n U [ -SU -- S:dU [ U 5:aX-$M}US:Xa[ SU"5- 5*U-$U"5n [U-[- nX-nUS::a USU- -n O[ X- U- 5*n U"5nUS:aXzUS- -::aX-$OU[ U *5::aX-$Mp)aGamma distribution. Not the gamma function! Conditions on the parameters are alpha > 0 and beta > 0. The probability distribution function is: x ** (alpha - 1) * math.exp(-x / beta) pdf(x) = -------------------------------------- math.gamma(alpha) * beta ** alpha The mean (expected value) and variance of the random variable are: E[X] = alpha * beta Var[X] = alpha * beta ** 2 rz*gammavariate: alpha and beta must be > 0.0r5r3gHz>gP?r6)rmr(rLOG4rr SG_MAGICCONST_e)r?alphabetar(ainvbbbcccrrvr@rrrrps rArRandom.gammavariates( C<43;IJ J 3; us*+D$,C,CXb,9,68^sRx)D0DGOGbL'MA%}$sQw.#5d1g8Oc\vx((4/ / H%Z2%E8cEk*Aquo..AXs753;//8O 048^8OrDcdURUS5nU(aX3URUS5-- $g)a!Beta distribution. Conditions on the parameters are alpha > 0 and beta > 0. Returned values range between 0 and 1. The mean (expected value) and variance of the random variable are: E[X] = alpha / (alpha + beta) Var[X] = alpha * beta / ((alpha + beta)**2 * (alpha + beta + 1)) r5r)r)r?rrys rArRandom.betavariates76   eS ) D--dC889 9rDc8SUR5- nUSU- -$)z3Pareto distribution. alpha is the shape parameter.r5gr)r?rrs rAr%Random.paretovariates# $++- TE\""rDcRSUR5- nU[U5*SU- --$)zVWeibull distribution. alpha is the scale parameter and beta is the shape parameter. r5)r(r)r?rrrs rAr1Random.weibullvariates. $++- acDj111rDcUS:a [S5eUS::dUS:aUS:XagUS:XaU$[S5eURnUS:Xa[U"5U:5$US:aXRUSU- 5- $X-S:aKS=pE[ SU- 5nU(dU$U[ [ U"55U- 5S-- nXQ:aU$US- nM0X-S:aUS::deS n[ X-SU- -5nS S U--n S SU --SU--n X-S-nSSU - - n U"5n U S-n S[U 5- n [ SU -U - U -U -U-5nUS:dX:aMBU"5nU S:aX::aU$U(dOSSU - -U-n[USU- - 5n[ US-U-5n[US-5[UU- S-5-nS nUWXU -- U -- -n[U5W[US-5- [X- S-5- UW- W--::aU$M)aZBinomial random variable. Gives the number of successes for *n* independent trials with the probability of success in each trial being *p*: sum(random() < p for i in range(n)) Returns an integer in the range: 0 <= X <= n The mean (expected value) and variance of the random variable are: E[X] = n * p Var[x] = n * p * (1 - p) rzn must be non-negativerr5z&p must be in the range 0.0 <= p <= 1.0r9rg$@TFgffffff?g= ףp=@gEJYga+e?{Gz?gq= ףp?g@r3gQ?gp= ף@gffffff@) rmr(rr_log2rr_fabsr_lgamma)r?rr r(r@rr`setup_completespqrr^vrrusrr rlpqmhs rArRandom.binomialvariates|" q556 6 8qCxCxCxEF F 6&(Q,' ' s7++AsQw77 7 54<IAcAgAVE&(Oa/01445HQ sd{qCx''AES1W%& 4#:  fqj 4!8 + ECK C!G^A HAuQxBa" q(A-12A1uATzag "a3.1a=)AEQ;'AENWQUQY%77!% !Bw-!+, ,AAw!ga!en,wquqy/AAQUcMQQ5rD)r>rr)Nr8)rr5Nrr5)r5)r9r)(__name__ __module__ __qualname____firstlineno____doc__rdrBr+r"r,rtrwrzrrBPFrr}r&rr)r'rr-r*rr/r.r$r r#rr0rrr%r1r__static_attributes__ __classcell__)ras@rArrgs G.`A6B3 (9:3'(-J=%)t'3R&.$/3]~#+tq#+P +12*$L32((TCJ@# 2VVrDrc>\rSrSrSrSrSrSrSrSr \ =r r Sr g ) ripzAlternate random number generator using sources provided by the operating system (such as /dev/urandom on Unix or CryptGenRandom on Windows). Not available on all systems (see os.urandom() for details). cR[R[S55S- [-$)z7Get the next random number in the range 0.0 <= X < 1.0.rFr<)rWrX_urandom RECIP_BPFrss rAr(SystemRandom.randomysx{+q0I==rDcUS:a [S5eUS-S-n[R[U55nX2S-U- - $)z:getrandbits(k) -> x. Generates an int with k random bits.rz#number of bits must be non-negativerFr)rmrWrXr-)r?rnumbytesr@s rAr!SystemRandom.getrandbits}sG q5BC CEa< NN8H- .\A%&&rDc[U5$)r)r-rs rAr&SystemRandom.randbytess{rDcg)z' P*)HxrDrc4SSKJnJn SSKJn U"5n[ SU5Vs/sHoq"U6PM nnU"5n U"U5n U"X5n [ U5n [U5n [X- SSUSURU<35 [SXX4-5 gs snf)Nr)stdevfmean) perf_counterz.3fz sec, z times z"avg %g, stddev %g, min %g, max %g ) statisticsr?r@timerArminmaxprintr#)rfuncr7r?meanrAt0rdatat1xbarrrrs rA_test_generatorrMs/! B!(q!1 2!1AD$K!1D 2 B :D $ E d)C t9D RWSMs'$-- AB /42J JK 3sBch[U[S5 [U[S5 [U[S5 [U[S5 [U[ S5 [U[ S5 [U[ S5 [U[ S5 [U[ S5 [U[ S5 [U[ S 5 [U[ S 5 [U[ S 5 [U[ S 5 [U[ S 5 [U[S5 [U[S5 [U[S5 g)Nrhr")g333333?)dg?)rr5)皙?r5)rQr3)rr5)g?r5)r5r5)r3r5)g4@r5)gi@r5)@rR)rr5gUUUUUU?) rMr(r$r#r0rrr rr.)Ns rA_testrTsAvr"A}j1A~z2A 3A 3A 4A|[1A|Z0A|Z0A|Z0A|Z0A|Z0A|Z0A|[1A|\2Auj)A{J/Az#89rDfork)after_in_childarg_listcSSKnURURS9nUR5nUR SSSSS9 UR SS [ S S S 9 UR S S[ S SS 9 UR S[ SSURS9 UR SSSS9 URU5nXBR54$)Nr)formatter_classz-cz--choice+zprint a random choice)nargshelpz-iz --integerrSz0print a random integer between 1 and N inclusive)rZmetavarr\z-fz--floatz>print a random floating-point number between 0 and N inclusivez--test'?)rZconstr[r\input*zif no options given, output depends on the input string or multiple: same as --choice integer: same as --integer float: same as --float) argparseArgumentParserRawTextHelpFormatteradd_mutually_exclusive_group add_argumentrWr[SUPPRESS parse_args format_help)rWrcparsergroupr7s rA _parse_argsrms  $ $ 55%7F  / / 1E  j $&  kS ?A  ieS MO s&     s   X &D ##% %%rDreturnc[U5upUR(a[UR5$URb[SUR5$URb[ SUR5$UR (a[UR 5 g[UR5S:Xa'URSn[U5n[SU5$[UR5S:a[UR5$U$![aF [ U5n[ SU5s$![a [UR55ss$f=ff=f)Nr9rr8) rmrintegerr'r[r/testrTrPrarWrmsplit)rWr7 help_textvals rAmainrvs!(+OD {{dkk"" ||q$,,'' zzq$**%% yy dii 4::!jjm +c(C1c? " 4::!djj!!  + +Cjq#& +ciik** +  +s0 D E!D52E!5#EE!EE!__main__)r^rr)`r'mathrrrrrrrrrrrrr rr rr rr rr rrrrrrrrrosrr-_collections_abcrroperatorrr itertoolsrrrrrr_os_random__all__rrrr(r.rrRrr_instr+r(r/r.r'rr)r*r-rr$r#rr0rr rrr%r1r"r,r!r&rMrThasattrregister_at_forkrrKrmrWrvr#rFrhrDrArs.hMLGGEE@@"2$B$ :DJs+  Cyd3i  #I  B W^^B R"*6"*X  zz  --    --  OO  -- --## %% ''!!   ''## %% >> >> OO L":0 3 3&$s)d*&6$49t#$sSy$N z $&MrD