???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................U
    e5dp                     @   s  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 d dlmZmZ d dlmZ m!Z" d dl#m#Z$ d dlZ%zd d	l&m'Z& W n  e(k
r   d d	l)m'Z& Y nX d
dddddddddddddddddddddd d!gZ*d"ed# ed$ Z+d$e	 Z,ed%Z-d&ed' Z.d(Z/d)e/  Z0d dl1Z1G d*d
 d
e1j2Z2G d+d! d!e2Z3d,d- Z4d4d/d0Z5e2 Z6e6j7Z7e6j8Z8e6j9Z9e6j:Z:e6j;Z;e6j<Z<e6j=Z=e6j>Z>e6j?Z?e6j@Z@e6jAZAe6jBZBe6jCZCe6jDZDe6jEZEe6jFZFe6jGZGe6jHZHe6jIZIe6jJZJe6jKZKe6jLZLeMe%d1re%jNe6j7d2 eOd3kre5  dS )5    )warn)logexppieceil)sqrtacoscossin)urandom)SetSequence)
accumulaterepeat)bisectN)sha512Randomseedrandomuniformrandintchoicesample	randrangeshufflenormalvariatelognormvariateexpovariatevonmisesvariategammavariate
triangulargaussbetavariateparetovariateweibullvariategetstatesetstategetrandbitschoicesSystemRandom   g             @      @      ?      @5      c                       s   e Zd ZdZd>ddZdd Zd? fdd		Z fd
dZ fddZdd Z	dd Z
dd ZddefddZdd Zdd Zede> fddZeZdd Zd@dd Zd!d" ZdAddd#d$d%Zd&d' ZdBd*d+Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Zd:d; Z d<d= Z!  Z"S )Cr      Nc                 C   s   |  | d | _d S N)r   
gauss_next)selfx r7   /usr/lib64/python3.8/random.py__init__^   s    
zRandom.__init__c                K   sJ   | j D ]>}d|jkr qFd|jkr.| j| _ qFd|jkr| j| _ qFqd S )N
_randbelowr(   r   )__mro____dict___randbelow_with_getrandbitsr:   _randbelow_without_getrandbits)clskwargscr7   r7   r8   __init_subclass__g   s    	



zRandom.__init_subclass__r1   c                    s   |dkrt |ttfrt |tr*|dn|}|rBt|d d> nd}tt|D ]}d| |A d@ }qP|t|N }|dkr~dn|}|d	krt |tttfrt |tr| }|t	|
 7 }t|d
}t | d | _d S )N   zlatin-1r      iCB l    r1   big)
isinstancestrbytesdecodeordmaplen	bytearrayencode_sha512Zdigestint
from_bytessuperr   r4   )r5   aversionr6   rA   	__class__r7   r8   r   {   s    
zRandom.seedc                    s   | j t  | jfS r3   )VERSIONrT   r&   r4   r5   rW   r7   r8   r&      s    zRandom.getstatec              
      s   |d }|dkr*|\}}| _ t | nt|dkr|\}}| _ ztdd |D }W n( tk
r| } z
t|W 5 d }~X Y nX t | ntd|| jf d S )Nr   r2   r1   c                 s   s   | ]}|d  V  qdS )l        Nr7   ).0r6   r7   r7   r8   	<genexpr>   s     z"Random.setstate.<locals>.<genexpr>z?state with version %s passed to Random.setstate() of version %s)r4   rT   r'   tuple
ValueError	TypeErrorrY   )r5   staterV   Zinternalstater   rW   r7   r8   r'      s    zRandom.setstatec                 C   s   |   S r3   )r&   rZ   r7   r7   r8   __getstate__   s    zRandom.__getstate__c                 C   s   |  | d S r3   )r'   )r5   r`   r7   r7   r8   __setstate__   s    zRandom.__setstate__c                 C   s   | j d|  fS )Nr7   )rX   r&   rZ   r7   r7   r8   
__reduce__   s    zRandom.__reduce__rC   c           
      C   s  ||}||krt d|d kr:|dkr2| |S t d||}||krRt d|| }|dkrx|dkrx|| | S |dkrt d|||f ||}||krt d|dkr|| d | }	n"|dk r|| d | }	nt d|	dkrt d||| |	  S )	Nz!non-integer arg 1 for randrange()r   zempty range for randrange()z non-integer stop for randrange()rC   z(empty range for randrange() (%d, %d, %d)z non-integer step for randrange()zzero step for randrange())r^   r:   )
r5   startstopstep_intZistartZistopwidthZistepnr7   r7   r8   r      s4    

zRandom.randrangec                 C   s   |  ||d S NrC   )r   r5   rU   br7   r7   r8   r      s    zRandom.randintc                 C   s,   | j }| }||}||kr(||}q|S r3   )r(   
bit_length)r5   ri   r(   krr7   r7   r8   r=      s    
z"Random._randbelow_with_getrandbitsc                 C   sn   | j }||kr$td || | S |dkr4td|| }|| | }| }||kr^| }qN||| | 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   zBoundary cannot be zero)r   _warnr^   )r5   ri   rR   maxsizer   Zremlimitro   r7   r7   r8   r>     s    z%Random._randbelow_without_getrandbitsc                 C   s:   z|  t|}W n tk
r0   tdd Y nX || S )Nz$Cannot choose from an empty sequence)r:   rN   r^   
IndexError)r5   seqir7   r7   r8   r     s
    zRandom.choicec                 C   s   |d krN| j }ttdt|D ]*}||d }|| ||  ||< ||< q nHt}ttdt|D ]0}|| |d  }|| ||  ||< ||< qdd S rj   )r:   reversedrangerN   rR   )r5   r6   r   	randbelowru   jrg   r7   r7   r8   r   %  s    	zRandom.shufflec                 C   s  t |trt|}t |ts$td| j}t|}d|  krF|ksPn tdd g| }d}|dkr|dtt	|d d 7 }||krt
|}t|D ]0}||| }	||	 ||< ||| d  ||	< qnHt }
|
j}t|D ]2}||}	|	|
kr||}	q||	 ||	 ||< q|S )	Nz>Population must be a sequence or set.  For dicts, use list(d).r   z,Sample larger than population or is negative      r+   r2   rC   )rH   _Setr]   	_Sequencer_   r:   rN   r^   _ceil_loglistrw   setadd)r5   
populationrn   rx   ri   resultZsetsizeZpoolru   ry   ZselectedZselected_addr7   r7   r8   r   ;  s6    )



zRandom.sample)cum_weightsrn   c                   s   | j td krV|d krHt d7  fddtd |D S tt|n|d k	rftdtkrztdtd d d fddtd |D S )	N        c                    s   g | ]}    qS r7   r7   r[   ru   )rg   ri   r   r   r7   r8   
<listcomp>  s     z"Random.choices.<locals>.<listcomp>z2Cannot specify both weights and cumulative weightsz3The number of weights does not match the populationrE   rC   c                    s$   g | ]}   d  qS )r   r7   r   )r   r   hir   r   totalr7   r8   r     s   )	r   rN   rR   _repeatr   _accumulater_   r^   _bisect)r5   r   Zweightsr   rn   r7   )rg   r   r   r   ri   r   r   r   r8   r)     s$    zRandom.choicesc                 C   s   ||| |     S r3   r   rk   r7   r7   r8   r     s    zRandom.uniformr   r.   c                 C   s|   |   }z |d krdn|| ||  }W n tk
r@   | Y S X ||krdd| }d| }|| }}||| t||   S )N      ?r.   )r   ZeroDivisionError_sqrt)r5   ZlowZhighmodeurA   r7   r7   r8   r!     s    	 

zRandom.triangularc                 C   sP   | j }| }d|  }t|d  | }|| d }|t| krqDq|||  S )Nr.   r   r-   )r   NV_MAGICCONSTr   )r5   musigmar   u1u2zZzzr7   r7   r8   r     s    
zRandom.normalvariatec                 C   s   t | ||S r3   )_expr   )r5   r   r   r7   r7   r8   r     s    zRandom.lognormvariatec                 C   s   t d|    | S Nr.   )r   r   )r5   Zlambdr7   r7   r8   r     s    zRandom.expovariatec                 C   s   | j }|dkrt|  S d| }|td||   }| }tt| }|||  }| }	|	d||  k s|	d| t| kr4qq4d| }
|
| d|
|   }| }|dkr|t| t }n|t| t }|S )Ngư>r   r.   )r   TWOPIr   _cos_pir   _acos)r5   r   Zkappar   sro   r   r   dr   qfZu3Zthetar7   r7   r8   r     s$    
$zRandom.vonmisesvariatec                 C   s~  |dks|dkrt d| j}|dkrtd| d }|t }|| }| }d|  k r`dk sdqF qFd|  }t|d|  | }	|t|	 }
|| | }|||	  |
 }|t d|  dks|t|krF|
| S qFn|dkrtd|   | S | }t| t }|| }|dkr$|d|  }
nt|| |  }
| }|dkr^||
|d  krpqrq|t|
 krqrq|
| S d S )Nr   z*gammavariate: alpha and beta must be > 0.0r.   r,   gHz>gP?r/   )r^   r   r   LOG4r   r   SG_MAGICCONST_e)r5   alphabetar   ZainvZbbbZcccr   r   vr6   r   ro   r   rl   pr7   r7   r8   r    #  s@    
 

zRandom.gammavariatec                 C   s`   | j }| j}d | _|d krT| t }tdtd|   }t|| }t|| | _|||  S )Ng       r.   )r   r4   r   r   r   r   _sin)r5   r   r   r   r   Zx2piZg2radr7   r7   r8   r"   h  s    
zRandom.gaussc                 C   s0   |  |d}|dkrdS |||  |d  S d S )Nr.   r   r   )r    )r5   r   r   yr7   r7   r8   r#     s    
zRandom.betavariatec                 C   s   d|    }d|d|   S r   r   )r5   r   r   r7   r7   r8   r$     s    zRandom.paretovariatec                 C   s"   d|    }|t| d|   S r   )r   r   )r5   r   r   r   r7   r7   r8   r%     s    zRandom.weibullvariate)N)Nr1   )N)N)r   r.   N)#__name__
__module____qualname__rY   r9   rB   r   r&   r'   ra   rb   rc   rR   r   r   r=   BPFr>   r:   r   r   r   r)   r   r!   r   r   r   r   r    r"   r#   r$   r%   __classcell__r7   r7   rW   r8   r   N   s:   
	 ,

G
0E5	c                   @   s4   e Zd Zdd Zdd Zdd Zdd Ze ZZd	S )
r*   c                 C   s   t tddd? t S )NrD   rG   r2   )rR   rS   _urandom	RECIP_BPFrZ   r7   r7   r8   r     s    zSystemRandom.randomc                 C   s<   |dkrt d|d d }tt|d}||d | ? S )Nr   z(number of bits must be greater than zerorD      rG   )r^   rR   rS   r   )r5   rn   Znumbytesr6   r7   r7   r8   r(     s
    zSystemRandom.getrandbitsc                 O   s   d S r3   r7   r5   argskwdsr7   r7   r8   r     s    zSystemRandom.seedc                 O   s   t dd S )Nz*System entropy source does not have state.)NotImplementedErrorr   r7   r7   r8   _notimplemented  s    zSystemRandom._notimplementedN)	r   r   r   r   r(   r   r   r&   r'   r7   r7   r7   r8   r*     s
   c                 C   s   dd l }t| d|j d}d}d}d}| }t| D ]4}	|| }
||
7 }||
|
  }t|
|}t|
|}q6| }tt|| dddd	 ||  }t||  ||  }td
||||f  d S )Nr   timesr   g    _Bg    _r2   zsec, )endz"avg %g, stddev %g, min %g, max %g
)	timeprintr   perf_counterrw   minmaxroundr   )ri   funcr   r   r   ZsqsumZsmallestZlargestZt0ru   r6   t1ZavgZstddevr7   r7   r8   _test_generator  s(    

r     c                 C   s   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 )Nr7   )r   r.   )g{Gz?r.   )皙?r.   )r   r,   )r   r.   )g?r.   )r.   r.   )r,   r.   )g      4@r.   )g      i@r.   )      @r   )r   r.   gUUUUUU?)	r   r   r   r   r   r    r"   r#   r!   )Nr7   r7   r8   _test  s     r   fork)Zafter_in_child__main__)r   )Pwarningsr   rp   Zmathr   r   r   r   r   r   r   r   r   r~   r   r   r	   r   r
   r   r   r   osr   r   _collections_abcr   r|   r   r}   	itertoolsr   r   r   r   r   r   _osrQ   r   ImportErrorZhashlib__all__r   r   r   r   r   r   Z_randomr   r*   r   r   Z_instr   r   r   r!   r   r   r   r   r   r)   r   r   r   r   r    r"   r#   r$   r%   r&   r'   r(   hasattrregister_at_forkr   r7   r7   r7   r8   <module>(   s               
    {

