
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
U
    ¡ê,a‚p  ã                   @   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   ú+/opt/alt/python38/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r‚t |ttfƒr‚t |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rÈt |tttfƒrÈt |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r’t d|||f ƒ‚||ƒ}||krªt dƒ‚|dkrÄ|| d | }	n"|dk rÞ|| d | }	nt dƒ‚|	dkröt 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 )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.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rÌt
|ƒ}t|ƒD ]0}||| ƒ}	||	 ||< ||| d  ||	< q˜nHtƒ }
|
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r4q€q4d| }
|
| 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rÖt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ròt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,   gH¯¼šò×z>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{®Gáz„?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�               û
    {

