
    =Og}                     r   	 d dl mZ d dlmZmZmZ	m
ZmZ d dlmZmZmZmZ d dlmZmZmZ d dlmZ d dlm Z!m"Z# d dl$m%Z& d dl'm(Z)m*Z+ d d	l,m,Z- d d
lZ.d d
l/Z/	 d dl0m1Z0 n# e2$ r	 d dl3m1Z0 Y nw xY wg dZ4d ed          z   ed          z  Z5 ed          Z6d ed          z   Z7dZ8de8 z  Z9dZ: G d de/j;                  Z; G d de;          Z< e;            Z=e=j>        Z>e=j?        Z?e=j@        Z@e=jA        ZAe=jB        ZBe=jC        ZCe=jD        ZDe=jE        ZEe=jF        ZFe=jG        ZGe=jH        ZHe=jI        ZIe=jJ        ZJe=jK        ZKe=jL        ZLe=jM        ZMe=jN        ZNe=jO        ZOe=jP        ZPe=jQ        ZQe=jR        ZRe=jS        ZSe=jT        ZTd ZUd dZV eWe.d          r e.jX        e=j>                   eYdk    r eV             d
S d
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         c                        e Zd Z	 dZd%dZd& fd	Z fdZ fdZd Zd	 Z	d
 Z
d Zd Zdez  fdZeZd ZdefdZd Zd Zd ZdddZd%ddddZd Zd'dZd(dZd(dZd Zd Zd  Zd! Zd" Z d# Z!d$ Z" xZ#S ))r      Nc                 @    	 |                      |           d | _        d S N)r*   
gauss_next)selfxs     /usr/lib64/python3.11/random.py__init__zRandom.__init__w   s#    	
 			!    r7   c           	      `   	 |dk    rt          |t          t          f          rt          |t                    r|                    d          n|}|rt	          |d                   dz  nd}t          t          |          D ]}d|z  |z  dz  }|t          |          z  }|dk    rdn|}n|d	k    rt          |t          t          t          f          rft          |t                    r|                                }t          
                    |t          |                                          z             }nKt          |t          d           t          t          t          t          t          f          st          d
          t!                                          |           d | _        d S )Nr8   zlatin-1r      iCB l    r7   zOThe only supported seed types are: None,
int, float, str, bytes, and bytearray.)
isinstancestrbytesdecodeordmaplen	bytearrayencodeint
from_bytes_sha512digesttypefloat	TypeErrorsuperr*   r=   )r>   aversionr?   c	__class__s        r@   r*   zRandom.seed   s}   	" a<<Jq3,77<'1!U';';B###A"#*AaD		QAa[[ = =kQ&*<<QKA2gg1AA\\jS%,CDD\!S!! HHJJq71::#4#4#6#6677AAAT

CUINOO 	F E F F F 	QrB   c                 `    	 | j         t                                                      | j        fS r<   )VERSIONrW   r!   r=   )r>   r[   s    r@   r!   zRandom.getstate   s'    G|UWW--//@@rB   c                    	 |d         }|dk    r.|\  }}| _         t                                          |           d S |dk    rc|\  }}| _         	 t          d |D                       }n# t          $ r}t
          |d }~ww xY wt                                          |           d S t	          d|d| j                  )Nr   r:   r7   c              3       K   | ]	}|d z  V  
dS )l        N ).0r?   s     r@   	<genexpr>z"Random.setstate.<locals>.<genexpr>   s&      %K%Ka7m%K%K%K%K%K%KrB   zstate with version z( passed to Random.setstate() of version )r=   rW   r+   tuple
ValueErrorrV   r]   )r>   staterY   internalstater   r[   s        r@   r+   zRandom.setstate   s    H(a<<6;3G]DOGG]+++++\\6;3G]DO
' %%K%K]%K%K%K K K ' ' 'Q&'GG]+++++*%ggt||5 6 6 6s   A+ +
B5A==Bc                 *    |                                  S r<   )r!   r>   s    r@   __getstate__zRandom.__getstate__   s    }}rB   c                 0    |                      |           d S r<   )r+   )r>   re   s     r@   __setstate__zRandom.__setstate__   s    erB   c                 :    | j         d|                                 fS )Nr`   )r[   r!   rh   s    r@   
__reduce__zRandom.__reduce__   s    ~r4==??22rB   c                    	 | j         D ]>}d|j        v r d S d|j        v r| j        | _         d S d|j        v r| j        | _         d S ?d S )N
_randbelowr    r'   )__mro____dict___randbelow_with_getrandbitsro   _randbelow_without_getrandbits)clskwargsrZ   s      r@   __init_subclass__zRandom.__init_subclass__   sy    	  		 		Aqz))
**!$!@1:%%!$!C &		 		rB   c                     	 | j         }|                                } ||          }||k    r ||          }||k    |S r<   )r    
bit_length)r>   nr    krs        r@   rr   z"Random._randbelow_with_getrandbits   sM    E&LLNNKNN1ffAA 1ffrB   r8   c                     	 | j         }||k    r)t          d           t           |            |z            S ||z  }||z
  |z  } |            }||k    r |            }||k    t          ||z            |z  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'   _warn_floor)r>   ry   maxsizer'   remlimitr{   s          r@   rs   z%Random._randbelow_without_getrandbits   s    	
 << N O O O &&((Q,'''k3')FHH5jjA 5jja'k""Q&&rB   c                 \    	 |                      |dz                                |d          S )N   little)r    to_bytesr>   ry   s     r@   r%   zRandom.randbytes  s-    &A&&//8<<<rB   c                 t   	 	 t          |          }n`# t          $ rS t          |          }||k    r%t          dt          d           t          d          t          dt          d           Y nw xY w|B|t          urt          d          |dk    r|                     |          S t          d          	 t          |          }n`# t          $ rS t          |          }||k    r%t          dt          d           t          d          t          dt          d           Y nw xY w||z
  }	 t          |          }n`# t          $ rS t          |          }||k    r%t          dt          d           t          d	          t          dt          d           Y nw xY w|d
k    r3|dk    r||                     |          z   S t          d|||fz            |dk    r||z   d
z
  |z  }n!|dk     r||z   d
z   |z  }nt          d          |dk    rt          d          |||                     |          z  z   S )Nz.randrange() will raise TypeError in the futurer7   z!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 argumentr   zempty range for randrange()z non-integer stop for randrange()z non-integer step for randrange()r8   z(empty range for randrange() (%d, %d, %d)zzero step for randrange())_indexrV   rP   r}   DeprecationWarningrd   _ONEro   )	r>   startstopstepistartistopwidthistepry   s	            r@   r(   zRandom.randrange  s   		)E]]FF 		) 		) 		)ZZFF(!- - - !DEEE  %a) ) ) ) )		) < 4 BCCCzzv...:;;;	)4LLEE 		) 		) 		)IIE}}F(!- - - !CDDD  %a) ) ) ) )		) 	)4LLEE 		) 		) 		)IIE}}F(!- - - !CDDD  %a) ) ) ) )		) A::qyy 6 666G6SXZ_J``aaa 199"u,AAQYY"u,AA899966:;;; 2 2222s6    AA0/A08C AD%$D%.D> >AFFc                 6    	 |                      ||dz             S Nr8   )r(   r>   rX   bs      r@   r&   zRandom.randintf  s!    	 ~~a1%%%rB   c                     	 t          |          st          d          ||                     t          |                             S )Nz$Cannot choose from an empty sequence)rM   
IndexErrorro   )r>   seqs     r@   r   zRandom.choiceo  sB    @ 3xx 	ECDDD4??3s88,,--rB   c                     	 | j         }t          t          dt          |                              D ]'} ||dz             }||         ||         c||<   ||<   (d S r   )ro   reversedrangerM   )r>   r?   	randbelowijs        r@   r,   zRandom.shufflex  sm    7O	%3q66**++ 	$ 	$A	!a%  A1qtJAaD!A$$	$ 	$rB   )countsc                   	 t          t                    st          d          t                    }|t	          t          |                    t                    |k    rt          d                                          }t          |t                    st          d          |dk    rt          d          | 	                    t          |          |          }t          fd|D             S | j        }d|cxk    r|k    sn t          d          d g|z  }d	}	|d
k    r&|	dt          t          |dz  d                    z  z  }	||	k    rLt	                    }
t          |          D ],} |||z
            }|
|         ||<   |
||z
  dz
           |
|<   -n[t                      }|j        }t          |          D ]6} ||          }||v r ||          }||v  ||           |         ||<   7|S )NzAPopulation must be a sequence.  For dicts or sets, use sorted(d).z2The number of counts does not match the populationzCounts must be integersr   z)Total of counts must be greater than zero)rz   c                 4    g | ]} |                   S r`   r`   )ra   sr   
cum_counts
populations     r@   
<listcomp>z!Random.sample.<locals>.<listcomp>  s*    JJJ!Jvvj!445JJJrB   z,Sample larger than population or is negative      r1   r:   r8   )rG   	_SequencerV   rM   list_accumulaterd   poprP   r)   r   _bisectro   _ceil_logsetadd)r>   r   rz   r   ry   total
selectionsr   resultsetsizepoolr   r   selectedselected_addr   r   s    `             @@r@   r)   zRandom.sample  sQ   	h *i00 	A @ A A A
OOk&1122J:!## !UVVVNN$$EeS)) ; 9:::zz !LMMMU5\\Q77JFJJJJJJzJJJJO	A{{{{{{{{KLLL!q55qE$q1ua..1111G<< 
##D1XX * *Ia!e$$ Gq	q1uqy/Q*
 uuH#<L1XX * *IaLL8mm!	!A 8mmQ&qMq		rB   )cum_weightsrz   c                  	
 	 | j         	t                    |+t          dz  	fdt          d |          D             S 	 t	          t          |                    nJ# t          $ r, t          |t                    s |}t          d|          d w xY w|t          d          t                    k    rt          d          d         dz   

dk    rt          d          t          
          st          d          t          d	z
  	
fd
t          d |          D             S )N        c                 H    g | ]}              z                     S r`   r`   )ra   r   r   ry   r   r'   s     r@   r   z"Random.choices.<locals>.<listcomp>  s2    RRRA
55A#6#67RRRrB   z4The number of choices must be a keyword argument: k=z2Cannot specify both weights and cumulative weightsz3The number of weights does not match the populationrE   z*Total of weights must be greater than zerozTotal of weights must be finiter8   c           	      N    g | ]!}              z  d                    "S )r   r`   )ra   r   r   r   hir   r'   r   s     r@   r   z"Random.choices.<locals>.<listcomp>  sI     + + + 66+vvxx%/?BGGH + + +rB   )r'   rM   r~   _repeatr   r   rV   rG   rP   rd   	_isfiniter   )r>   r   weightsr   rz   r   r   r   ry   r'   r   s    ` ` @@@@@@r@   r   zRandom.choices  s   	 
OOSRRRRRRRqAQAQRRRR";w#7#788   !'3// MMM 	  PQQQ{q  RSSSB#%C<<IJJJ 	@>???U+ + + + + + + + + q))+ + + 	+s   A- -6B#c                 >    	 |||z
  |                                  z  z   S r<   r'   r   s      r@   r.   zRandom.uniform  s!    RAET[[]]***rB   r   r4   c                     	 |                                  }	 |dn
||z
  ||z
  z  }n# t          $ r |cY S w xY w||k    rd|z
  }d|z
  }||}}|||z
  t          ||z            z  z   S )N      ?r4   )r'   ZeroDivisionError_sqrt)r>   lowhighmodeurZ   s         r@   r-   zRandom.triangular  s    	 KKMM	|$*)DAA  	 	 	JJJ	q55aAaAcCdSjE!a%LL000s   ' 66c                     	 | j         }	  |            }d |            z
  }t          |dz
  z  |z  }||z  dz  }|t          |           k    rnE|||z  z   S )NTr4   r   r3   )r'   NV_MAGICCONSTr   )r>   musigmar'   u1u2zzzs           r@   r#   zRandom.normalvariate   sx    	 	BvvxxBc*R/AQBd2hhY	 AI~rB   c                    	 | j         }| j        }d | _        |e |            t          z  }t          dt	          d |            z
            z            }t          |          |z  }t          |          |z  | _        |||z  z   S )Ng       r4   )r'   r=   TWOPIr   r   _cos_sin)r>   r   r   r'   r   x2pig2rads          r@   r   zRandom.gauss5  s    	4 O9688e#D$cFFHHn!5!5566ET

U"A"4jj50DOAI~rB   c                 J    	 t          |                     ||                    S r<   )_expr#   )r>   r   r   s      r@   r"   zRandom.lognormvariate[  s'    	 D&&r511222rB   c                 T    	 t          d|                                 z
             |z  S Nr4   )r   r'   )r>   lambds     r@   r   zRandom.expovariatee  s,    	 S4;;==()))E11rB   c                    	 | j         }|dk    rt           |            z  S d|z  }|t          d||z  z             z   }	  |            }t          t          |z            }|||z   z  } |            }	|	d||z  z
  k     s|	d|z
  t          |          z  k    rnZd|z  }
|
|z   d|
|z  z   z  } |            }|dk    r|t          |          z   t          z  }n|t          |          z
  t          z  }|S )Ngư>r   r4   )r'   r   r   r   _pir   _acos)r>   r   kappar'   r   r{   r   r   dr   qfu3thetas                 r@   r/   zRandom.vonmisesvariatev  s   	 D==6688##%KcAEk"""	BS2XAQUABC!a%K2#'T!WW)<#<#<	 !GUsQU{#VXX88%((]e+EE%((]e+ErB   c                    	 |dk    s|dk    rt          d          | j        }|dk    rt          d|z  dz
            }|t          z
  }||z   }	  |            }d|cxk     rdk     sn d |            z
  }t	          |d|z
  z            |z  }	|t          |	          z  }
||z  |z  }|||	z  z   |
z
  }|t          z   d|z  z
  dk    s|t	          |          k    r|
|z  S |dk    rt	          d |            z
             |z  S 	  |            }t          |z   t          z  }||z  }|dk    r	|d|z  z  }
nt	          ||z
  |z             }
 |            }|dk    r||
|dz
  z  k    rnn|t          |
           k    rnz|
|z  S )	Nr   z*gammavariate: alpha and beta must be > 0.0r4   r2   TgHz>gP?r5   )rd   r'   r   LOG4r   r   SG_MAGICCONST_e)r>   alphabetar'   ainvbbbcccr   r   vr?   r   r{   r   r   ps                   r@   r   zRandom.gammavariate  s   
	 C<<43;;IJJJ3;; us*++D$,C$,C
$VXXb,,,,9,,,,6688^sRx))D0DGGOGbL#'MA%}$sQw.#55d1ggt8O
$ c\\vvxx(((4//
FHH%Z2%E88cEk*AAq1uo...AVXXs77Q53;/// 0488^^ t8OrB   c                 p    	 |                      |d          }|r|||                      |d          z   z  S dS )Nr4   r   )r   )r>   r   r   ys       r@   r   zRandom.betavariate  sK    	* eS)) 	:D--dC88899srB   c                 B    	 d|                                  z
  }|d|z  z  S )Nr4   g      r   )r>   r   r   s      r@   r$   zRandom.paretovariate  s(    A $++--TE\""rB   c                 d    	 d|                                  z
  }|t          |           d|z  z  z  S r   )r'   r   )r>   r   r   r   s       r@   r0   zRandom.weibullvariate  s7    	 $++--acDj111rB   r<   )Nr7   )r   r4   Nr   r4   )$__name__
__module____qualname__r]   rA   r*   r!   r+   ri   rk   rm   rv   rr   BPFrs   ro   r%   r   r(   r&   r   r,   r)   r   r.   r-   r#   r   r"   r   r/   r   r   r$   r0   __classcell__)r[   s   @r@   r   r   g   s_        G   $ $ $ $ $ $LA A A A A6 6 6 6 6B    3 3 3  (   9:3 ' ' ' '& -J= = = %)t H3 H3 H3 H3T& & &. . .$ $ $ /3 ] ] ] ] ]~#+tq #+ #+ #+ #+ #+P+ + +1 1 1 1(   *$ $ $ $L3 3 32 2 2"( ( (T? ? ?B  6# # #	2 	2 	2 	2 	2 	2 	2rB   r   c                   6    e Zd Z	 d Zd Zd Zd Zd ZexZZ	dS )r   c                 h    	 t                               t          d                    dz	  t          z  S )NrD   r:   )rP   rQ   _urandom	RECIP_BPFrh   s    r@   r'   zSystemRandom.random  s'    Ex{{++q0I==rB   c                     	 |dk     rt          d          |dz   dz  }t                              t          |                    }||dz  |z
  z	  S )Nr   z#number of bits must be non-negativerD   r   )rd   rP   rQ   r   )r>   rz   numbytesr?   s       r@   r    zSystemRandom.getrandbits   sW    Hq55BCCCEa<NN8H--..X\A%&&rB   c                 "    	 t          |          S r<   )r   r   s     r@   r%   zSystemRandom.randbytes(  s    & {{rB   c                     	 d S r<   r`   r>   argskwdss      r@   r*   zSystemRandom.seed.  s
    FtrB   c                 "    	 t          d          )Nz*System entropy source does not have state.)NotImplementedErrorr  s      r@   _notimplementedzSystemRandom._notimplemented2  s    K!"NOOOrB   N)
r   r   r   r'   r    r%   r*   r	  r!   r+   r`   rB   r@   r   r     sm        > > >' ' '    P P P *)HxxxrB   r   c                 ^   ddl m}m} ddlm}  |            }fdt          d |           D             } |            } ||          }	 |||	          }
t          |          }t          |          }t          ||z
  dd|  dj	                    t          d|	|
||fz             d S )	Nr   )stdevfmean)perf_counterc                     g | ]}  S r`   r`   )ra   r   r  funcs     r@   r   z#_test_generator.<locals>.<listcomp>a  s    222ADD$K222rB   z.3fz sec, z times z"avg %g, stddev %g, min %g, max %g
)

statisticsr  r  timer  r   minmaxprintr   )ry   r  r  r  meanr  t0datat1xbarr   r   r   s    ``          r@   _test_generatorr  \  s    ////////!!!!!!	B22222q!1!1222D	B4::DE$E
d))Ct99D	R"W
9
9
9
9
9$-
9
9:::	
/4T2J
JKKKKKrB     c                    t          | t          d           t          | t          d           t          | t          d           t          | t          d           t          | t
          d           t          | t
          d           t          | t
          d           t          | t
          d           t          | t
          d           t          | t
          d           t          | t
          d	           t          | t
          d
           t          | t
          d           t          | t          d           t          | t          d           t          | t          d           d S )Nr`   r   )g{Gz?r4   )皙?r4   )r  r2   )r   r4   )g?r4   )r4   r4   )r2   r4   )g      4@r4   )g      i@r4   )      @r  )r   r4   gUUUUUU?)	r  r'   r#   r"   r/   r   r   r   r-   )Ns    r@   _testr   m  s)   Avr"""A}j111A~z222A
333A|[111A|Z000A|Z000A|Z000A|Z000A|Z000A|Z000A|[111A|\222Auj)))A{J///Az#899999rB   fork)after_in_child__main__)r  )Zwarningsr   r}   mathr   r   r   r   r   r   r   r   r   r   r	   r   r
   r   r   r   r   r   r   r   r   r~   r   r   osr   r   _collections_abcr   _Setr   r   operatorr   r   	itertoolsr   r   r   r   r   r   _os_randomrR   r   ImportErrorhashlib__all__r   r   r   r   r   r   r   r   _instr*   r'   r.   r-   r&   r   r(   r)   r,   r   r#   r"   r   r/   r   r   r   r$   r0   r!   r+   r    r%   r  r   hasattrregister_at_forkr   r`   rB   r@   <module>r3     sG  )^ # " " " " " L L L L L L L L L L L L L L G G G G G G G G G G G G E E E E E E E E E E " " " " " " ? ? ? ? ? ? ? ? $ $ $ $ $ $ B B B B B B B B $ $ $ $ $ $     *))))))) * * *))))))))*  8 DDJJs+tCyydd3ii#I	e
2 e
2 e
2 e
2 e
2W^ e
2 e
2 e
2X"* "* "* "* "*6 "* "* "*X 	z	
-

-	O		
-
-#%'!#%>>O	L L L": : : :, 73 4C
3333 z	EGGGGG s   A A,+A,