
    z%i;                     \   	 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mZm Z! d dl"m#Z$ d dl%m&Z' d dl(m)Z* d d	l+m,Z-m.Z/ d d
l0m0Z1 d dl"Z2d dl3Z3	 d dl4m5Z4 g dZ8d ed      z   ed      z  Z9 ed      Z:d ed      z   Z;dZ<de< z  Z=dZ> G d de3j~                        Z? G d de?      Z@ e?       ZAeAj                  ZBeAj                  ZCeAj                  ZDeAj                  ZEeAj                  ZFeAj                  ZGeAj                  ZHeAj                  ZIeAj                  ZJeAj                  ZKeAj                  ZLeAj                  ZMeAj                  ZNeAj                  ZOeAj                  ZPeAj                  ZQeAj                  ZReAj                  ZSeAj                  ZTeAj                  ZUeAj                  ZVeAj                  ZWeAj                  ZXeAj                  ZYd ZZd dZ[ e\e2d      r e2j                  eAj                         e^dk(  r e[        yy# e6$ r
 d dl7m5Z4 Y w xY w)!    )warn)logexppieceil)sqrtacoscossin)taufloorisfinite)lgammafabslog2)urandom)Sequence)index)
accumulaterepeat)bisectN)sha512)RandomSystemRandombetavariatebinomialvariate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'dZd Zd Zd Z d  Z!d! Z"d(d"Z# xZ$S ))r      Nc                 6    	 | j                  |       d | _        y N)r-   
gauss_next)selfxs     :/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/random.py__init__zRandom.__init__~   s    	
 			!    c           	         	 |dk(  rt        |t        t        f      rpt        |t              r|j                  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(  rkt        |t        t        t        f      rPt        |t              r|j                         }t        j                  |t        |      j                         z         }n:t        |t        d       t        t        t        t        t        f      st        d
      t         | E  |       d | _        y )Nr;   zlatin-1r      iCB l    r:   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@   )rA   aversionrB   c	__class__s        rC   r-   zRandom.seed   s   	" a<Jq3,7'1!U';#A"#AaD	QAa[ =kQ&*<<=QKA2g1A\jS%,CD!S!HHJq71:#4#4#667AAT
CUINO E F F 	QrE   c                 P    	 | j                   t        | 	         | j                  fS r?   )VERSIONrZ   r$   r@   )rA   r^   s    rC   r$   zRandom.getstate   s#    G||UW-/@@rE   c                    	 |d   }|dk(  r|\  }}| _         t        | 	  |       y |dk(  r.|\  }}| _         	 t        d |D              }t        | 	  |       y t	        d|d| j                        # t        $ r}t
        |d }~ww xY w)Nr   r=   r:   c              3   &   K   | ]	  }|d z    yw)l        N ).0rB   s     rC   	<genexpr>z"Random.setstate.<locals>.<genexpr>   s     %Ka7m%Ks   zstate with version z( passed to Random.setstate() of version )r@   rZ   r.   tuple
ValueErrorrY   r`   )rA   stater\   internalstater   r^   s        rC   r.   zRandom.setstate   s    H(a<6;3G]DOG]+\6;3G]DO
' %%K]%K K G]+%t||5 6 6	  'Q&'s   A6 6	B?BBc                 "    | j                         S r?   )r$   rA   s    rC   __getstate__zRandom.__getstate__   s    }}rE   c                 &    | j                  |       y r?   )r.   )rA   rh   s     rC   __setstate__zRandom.__setstate__   s    erE   c                 <    | j                   d| j                         fS )Nrc   )r^   r$   rk   s    rC   
__reduce__zRandom.__reduce__   s    ~~r4==?22rE   c                    	 | j                   D ]T  }d|j                  v r y d|j                  v r| j                  | _         y d|j                  v sC| j                  | _         y  y )N
_randbelowr#   r*   )__mro____dict___randbelow_with_getrandbitsrr   _randbelow_without_getrandbits)clskwargsr]   s      rC   __init_subclass__zRandom.__init_subclass__   sc    	  		Aqzz)

*!$!@!@1::%!$!C!C		rE   c                 v    	 | j                   }|j                         } ||      }||k\  r ||      }||k\  r|S r?   )r#   
bit_length)rA   nr#   krs        rC   ru   z"Random._randbelow_with_getrandbits   sB    E&&LLNN1fAA 1frE   r;   c                     	 | j                   }||k\  rt        d       t         |       |z        S ||z  }||z
  |z  } |       }||k\  r |       }||k\  r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)rA   r|   maxsizer*   remlimitr~   s          rC   rv   z%Random._randbelow_without_getrandbits   s    	
 < N O &(Q,''k3')H5jA 5ja'k"Q&&rE   c                 L    	 | j                  |dz        j                  |d      S )N   little)r#   to_bytesrA   r|   s     rC   r(   zRandom.randbytes  s'    &A&//8<<rE   c           	         	 t        |      }|4|t        urt        d      |dkD  r| j                  |      S t	        d      t        |      }||z
  }t        |      }|dk(  r+|dkD  r|| j                  |      z   S t	        d| d| d      |dkD  r||z   dz
  |z  }n|dk  r||z   dz   |z  }nt	        d      |dk  rt	        d| d| d| d      ||| j                  |      z  z   S )	Nz Missing a non-None stop argumentr   zempty range for randrange()r;   zempty range in randrange(z, )zzero step for randrange())_index_ONErY   rr   rg   )	rA   startstopstepistartistopwidthistepr|   s	            rC   r+   zRandom.randrange#  s,   	 < 4 BCCzv..:;; ttA:qy 6668r$qIJJ 19"u,AQY"u,A89968r$r$qQRR 2222rE   c                 .    	 | j                  ||dz         S Nr;   )r+   rA   r[   bs      rC   r)   zRandom.randintL  s    	 ~~a1%%rE   c                 j    	 t        |      st        d      || j                  t        |               S )Nz$Cannot choose from an empty sequence)rP   
IndexErrorrr   )rA   seqs     rC   r   zRandom.choiceU  s2    @ 3xCDD4??3s8,--rE   c                     	 | j                   }t        t        dt        |                  D ]  } ||dz         }||   ||   c||<   ||<     y r   )rr   reversedrangerP   )rA   rB   	randbelowijs        rC   r/   zRandom.shuffle^  sV    7OO	%3q6*+ 	$A!a% A1qtJAaD!A$	$rE   )countsc                   	 t        |t              st        d      t        |      }|t	        t        |            }t        |      |k7  rt        d      |j                         }t        |t              st        d      |dk  rt        d      | j                  t        |      |      }t        }|D 	cg c]  }	| |||	          c}	S | j                  }
d|cxk  r|k  st        d       t        d      d g|z  }d}|d	kD  r|d
t        t        |dz  d
            z  z  }||k  r>t	        |      }t        |      D ]#  } |
||z
        }||   ||<   |||z
  dz
     ||<   % |S t               }|j                   }t        |      D ]+  } |
|      }||v r |
|      }||v r ||       ||   ||<   - |S c c}	w )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)r}   z,Sample larger than population or is negative      r4   r=   r;   )rJ   	_SequencerY   rP   list_accumulaterg   poprS   r,   r   _bisectrr   _ceil_logsetadd)rA   
populationr}   r   r|   
cum_countstotal
selectionsr   sr   resultsetsizepoolr   r   selectedselected_adds                     rC   r,   zRandom.sampleg  s   	h *i0 @ A A
Ok&12J:!# !UVVNN$EeS) 9::z !LMMU5\Q7JF?IJ!Jvj!45JJOO	A{{KLL KLL!q5qE$q1ua.111G< 
#D1X *a!e$ Gq	q1uqy/Q*  uH#<<L1X *aL8m!!A 8mQ&qMq	* 3 Ks   8F;)cum_weightsr}   c          
      ^   	 | j                   }t        |      }|N|6t        }|dz  }t        d |      D cg c]  }| | |       |z            c}S 	 t	        t        |            }n|t        d      t        |      |k7  rt        d      |d   dz   }	|	dk  rt        d      t        |	      st        d      t        }
|dz
  }t        d |      D cg c]  }| |
| |       |	z  d	|          c}S c c}w # t        $ r# t        |t              s |}t        d|      d w xY wc c}w )
N        z4The number of choices must be a keyword argument: k=z2Cannot specify both weights and cumulative weightsz3The number of weights does not match the populationrH   z*Total of weights must be greater than zerozTotal of weights must be finiter;   r   )r*   rP   r   _repeatr   r   rY   rJ   rS   rg   	_isfiniter   )rA   r   weightsr   r}   r*   r|   r   r   r   r   his               rC   r   zRandom.choices  s`   	 
OSAHqAQRA
5A#67RR";w#78  PQQ{q RSSB#%C<IJJ>??U q)+ 6+vx%/?BGH + 	++ S  !'3/KM	$+s   C6C; D*;,D'c                 6    	 |||z
  | j                         z  z   S r?   r*   r   s      rC   r1   zRandom.uniform  s    RAET[[]***rE   c                     	 | j                         }	 |dn
||z
  ||z
  z  }||kD  rd|z
  }d|z
  }||}}|||z
  t        ||z        z  z   S # t        $ r |cY S w xY w)N      ?r7   )r*   ZeroDivisionError_sqrt)rA   lowhighmodeur]   s         rC   r0   zRandom.triangular  s    	 KKM	|$*)DA q5aAaAcCdSjE!a%L000 ! 	J	s   A AAc                     	 | j                   }	  |       }d |       z
  }t        |dz
  z  |z  }||z  dz  }|t        |       k  rn9|||z  z   S )Nr7   r   r6   )r*   NV_MAGICCONSTr   )rA   musigmar*   u1u2zzzs           rC   r&   zRandom.normalvariate  sl    	 BvxBc*R/AQBd2hY  AI~rE   c                     	 | j                   }| j                  }d | _        |N |       t        z  }t        dt	        d |       z
        z        }t        |      |z  }t        |      |z  | _        |||z  z   S )Ng       r7   )r*   r@   TWOPIr   r   _cos_sin)rA   r   r   r*   r   x2pig2rads          rC   r"   zRandom.gauss  sy    	4 OO98e#D$cFHn!556ET
U"A"4j50DOAI~rE   c                 :    	 t        | j                  ||            S r?   )_expr&   )rA   r   r   s      rC   r%   zRandom.lognormvariateA  s!    	 D&&r5122rE   c                 D    	 t        d| j                         z
         |z  S Nr7   )r   r*   )rA   lambds     rC   r    zRandom.expovariateK  s'    	 S4;;=())E11rE   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Id|z  }
|
|z   d|
|z  z   z  } |       }|dkD  r|t        |      z   t        z  }|S |t        |      z
  t        z  }|S )Ngư>r   r7   )r*   r   r   r   _pir   _acos)rA   r   kappar*   r   r~   r   r   dr   qfu3thetas                 rC   r2   zRandom.vonmisesvariate\  s    	 D=68##%KcAEk""BS2XAQUABC!a%K2#'T!W)<#<  !GUsQU{#X8%(]e+E  %(]e+ErE   c                    	 |dk  s|dk  rt        d      | j                  }|dkD  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 z|dk(  rt	        d |       z
         |z  S 	  |       }t        |z   t        z  }||z  }|dk  r	|d|z  z  }
nt	        ||z
  |z         }
 |       }|dkD  r||
|dz
  z  k  r	 |
|z  S |t        |
       k  r	 |
|z  S o)Nr   z*gammavariate: alpha and beta must be > 0.0r7   r5   gHz>gP?r8   )rg   r*   r   LOG4r   r   SG_MAGICCONST_e)rA   alphabetar*   ainvbbbcccr   r   vrB   r   r~   r   r   ps                   rC   r!   zRandom.gammavariate  s   
	 C<43;IJJ3; us*+D$,C$,CXb,9,68^sRx)D0DGOGbL#'MA%}$sQw.#5d1gt8O  c\vx((4//
 H%Z2%E8cEk*Aq1uo..AXs7Q53;// t8O 48^t8O rE   c                 ^    	 | j                  |d      }|r||| j                  |d      z   z  S y)Nr7   r   )r!   )rA   r   r   ys       rC   r   zRandom.betavariate  s>    	* eS)D--dC8899rE   c                 :    	 d| j                         z
  }|d|z  z  S )Nr7   g      r   )rA   r   r   s      rC   r'   zRandom.paretovariate  s&    A $++-TE\""rE   c                 T    	 d| j                         z
  }|t        |       d|z  z  z  S r   )r*   r   )rA   r   r   r   s       rC   r3   zRandom.weibullvariate  s3    	 $++-acDj111rE   c                    	 |dk  rt        d      |dk  s|dk\  r|dk(  ry|dk(  r|S t        d      | j                  }|dk(  rt         |       |k        S |dkD  r|| j                  |d|z
        z
  S ||z  dk  rFdx}}t	        d|z
        }|s|S 	 |t        t	         |             |z        dz   z  }||kD  r|S |dz  }/d
}t        ||z  d|z
  z        }dd|z  z   }	dd|	z  z   d|z  z   }
||z  dz   }dd|	z  z
  }	  |       }|dz  }dt        |      z
  }t        d|
z  |z  |	z   |z  |z         }|dk  s||kD  r@ |       }|dk\  r||k  r|S |sOdd|	z  z   |z  }t        |d|z
  z        }t        |dz   |z        }t        |dz         t        ||z
  dz         z   }d	}||
||z  z  |	z   z  z  }t        |      t        |dz         z
  t        ||z
  dz         z
  |z
  z  z   k  r|S )Nr   zn must be non-negativer   r7   z&p must be in the range 0.0 <= p <= 1.0r;   r   g      $@TFgffffff?g=
ףp=@gEJYga+e?{Gz?gq=
ףp?g@r5   gQ?gp=
ף@gffffff@)
rg   r*   r   r   _log2r   r   _fabsr   _lgamma)rA   r|   r   r*   rB   r   r]   setup_completespqr   r[   vrr   usr}   r   r   lpqmhs                       rC   r   zRandom.binomialvariate  s   		 q55668qCxCxCxEFF 6&(Q,'' s7t++AsQw777q54< IAcAgAVE&(Oa/0144q5HQ	  AES1W%&4#:fqj 4!8+ECKC!G^AHAuQxBa"q(A-12A1uA ATza2g
 "a3.1a=)AEQ;'AENWQUQY%77!%!rBw-!+,,AAw!ga!en,wq1uqy/AAQUcMQQ5 rE   r?   )Nr:   )r   r7   Nr   r7   )r7   )r;   r   )%__name__
__module____qualname__r`   rD   r-   r$   r.   rl   rn   rp   ry   ru   BPFrv   rr   r(   r   r+   r)   r   r/   r,   r   r1   r0   r&   r"   r%   r    r2   r!   r   r'   r3   r   __classcell__)r^   s   @rC   r   r   n   s     G$LA6B3( 9:3 '& -J= %)t '3R&.$ /3 ]~#+tq #+P+1(*$L32"(T?B6#	2QrE   r   c                   4    e Zd Z	 d Zd Zd Zd Zd ZexZZ	y)r   c                 T    	 t         j                  t        d            dz	  t        z  S )NrG   r=   )rS   rT   _urandom	RECIP_BPFrk   s    rC   r*   zSystemRandom.randomX  s"    Ex{+q0I==rE   c                     	 |dk  rt        d      |dz   dz  }t        j                  t        |            }||dz  |z
  z	  S )Nr   z#number of bits must be non-negativerG   r   )rg   rS   rT   r	  )rA   r}   numbytesrB   s       rC   r#   zSystemRandom.getrandbits\  sL    Hq5BCCEa<NN8H-.X\A%&&rE   c                     	 t        |      S r?   )r	  r   s     rC   r(   zSystemRandom.randbytesd  s    & {rE   c                      	 y r?   rc   rA   argskwdss      rC   r-   zSystemRandom.seedj  s    FrE   c                     	 t        d      )Nz*System entropy source does not have state.)NotImplementedErrorr  s      rC   _notimplementedzSystemRandom._notimplementedn  s    K!"NOOrE   N)
r  r  r  r*   r#   r(   r-   r  r$   r.   rc   rE   rC   r   r   O  s-    >'P *)HxrE   r   c                 6   ddl m}m} ddlm}  |       }t        d |       D cg c]  } || 	 }} |       }	 ||      }
 |||
      }t        |      }t        |      }t        |	|z
  dd|  d|j                   |       t        d|
|||fz         y c c}w )Nr   )stdevfmean)perf_counterz.3fz sec, z times z"avg %g, stddev %g, min %g, max %g
)

statisticsr  r  timer  r   minmaxprintr  )r|   funcr  r  meanr  t0r   datat1xbarr   r   r   s                 rC   _test_generatorr$    s    /!	B!(q!12AD$K2D2	B:D$E
d)Ct9D	R"WSMs'$--
AB	
/4T2J
JK 3s   Bc                 h   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       t        | t        d       t        | t        d       y )Nrc   r  )   g333333?)d   g      ?)r   r7   )皙?r7   )r(  r5   )r   r7   )g?r7   )r7   r7   )r5   r7   )g      4@r7   )g      i@r7   )      @r)  )r   r7   gUUUUUU?)
r$  r*   r&   r%   r2   r   r!   r"   r   r0   )Ns    rC   _testr+    s    Avr"A}j1A~z2A
3A
3A4A|[1A|Z0A|Z0A|Z0A|Z0A|Z0A|Z0A|[1A|\2Auj)A{J/Az#89rE   fork)after_in_child__main__)i'  )_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   r   r   r   r   r   r   osr   r	  _collections_abcr   r   operatorr   r   	itertoolsr   r   r   r   r   r   _os_randomrU   r   ImportErrorhashlib__all__r   r   r   r  r
  r   r   r   _instr-   r*   r1   r0   r)   r   r+   r,   r/   r   r&   r%   r    r2   r!   r"   r   r   r'   r3   r$   r.   r#   r(   r$  r+  hasattrregister_at_forkr  rc   rE   rC   <module>r=     s  .h # L L G G E E @ @ " 2 $ B $  *)
: DJs+Cyd3i#I	ZW^^ ZB"*6 "*X 	zz	
--

--	OO		
--
--##%%''!!''##%%>>>>OO	L":0 3C

3 z	G C  *))*s   H H+*H+