
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3

  \2k  ã               @   sÔ  d dl mZ d dlmZ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% d dl&Z'd dl(Z)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d1ƒ 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,„ Z4d2d.d/„Z5e2ƒ Z6e6j7Z7e6j8Z8e6j9Z9e6j:Z:e6j;Z;e6j<Z<e6j=Z=e6j>Z>e6j?Z?e6j@Z@e6jAZAe6jBZBe6jCZCe6jDZDe6jEZEe6jFZFe6jGZGe6jHZHe6jIZIe6jJZJe6jKZKe6jLZLeMd0k�rÐe5ƒ  dS )3é    )Úwarn)Ú
MethodTypeÚBuiltinMethodType)ÚlogÚexpÚpiÚeÚceil)ÚsqrtÚacosÚcosÚsin)Úurandom)ÚSetÚSequence)Úsha512NÚ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      à?g       @g      @g      ð?g      @é5   é   c                   s  e Zd ZdZd: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ede> eeefdd„Zdd„ Zd<dd„Zdd„ Zd=dddœd d!„Zd"d#„ Zd>d&d'„Zd(d)„ Zd*d+„ Zd,d-„ Zd.d/„ Zd0d1„ Zd2d3„ Zd4d5„ Zd6d7„ Z d8d9„ Z!‡  Z"S )?r   é   Nc             C   s   | j |ƒ d | _d S )N)r   Ú
gauss_next)ÚselfÚx© r1   ú/usr/lib64/python3.6/random.pyÚ__init__W   s    
zRandom.__init__r,   c                sâ   |dkr†t |ttfƒr†t |tƒr*|jdƒn|}|rBt|d ƒd> nd}x"tt|ƒD ]}d| |A d@ }qRW |t|ƒN }|d	kr‚d
n|}|dkrÌt |tttfƒrÌt |tƒr°|jƒ }|t	|ƒj
ƒ 7 }tj|dƒ}tƒ j|ƒ d | _d S )Né   zlatin-1r   é   iCB l   ÿÿÿÿ r,   Úbigéÿÿÿÿéþÿÿÿ)Ú
isinstanceÚstrÚbytesÚdecodeÚordÚmapÚlenÚ	bytearrayÚencodeÚ_sha512ZdigestÚintÚ
from_bytesÚsuperr   r.   )r/   ÚaÚversionr0   Úc)Ú	__class__r1   r2   r   `   s    
zRandom.seedc                s   | j tƒ jƒ | jfS )N)ÚVERSIONrE   r%   r.   )r/   )rI   r1   r2   r%   €   s    zRandom.getstatec                s¢   |d }|dkr*|\}}| _ tƒ j|ƒ nt|dkrŒ|\}}| _ ytdd„ |D ƒƒ}W n( tk
r| } zt|‚W Y d d }~X nX tƒ j|ƒ ntd|| jf ƒ‚d S )Nr   r-   r,   c             s   s   | ]}|d V  qdS )r,   é    Nl        r1   )Ú.0r0   r1   r1   r2   ú	<genexpr>‘   s    z"Random.setstate.<locals>.<genexpr>z?state with version %s passed to Random.setstate() of version %s)r.   rE   r&   ÚtupleÚ
ValueErrorÚ	TypeErrorrJ   )r/   ÚstaterG   Zinternalstater   )rI   r1   r2   r&   „   s    zRandom.setstatec             C   s   | j ƒ S )N)r%   )r/   r1   r1   r2   Ú__getstate__¢   s    zRandom.__getstate__c             C   s   | j |ƒ d S )N)r&   )r/   rQ   r1   r1   r2   Ú__setstate__¥   s    zRandom.__setstate__c             C   s   | j f | jƒ fS )N)rI   r%   )r/   r1   r1   r2   Ú
__reduce__¨   s    zRandom.__reduce__r4   c       
      C   s  ||ƒ}||krt dƒ‚|d kr:|dkr2| j|ƒS t dƒ‚||ƒ}||krRt dƒ‚|| }|dkrx|dkrx|| j|ƒ 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ƒ‚||| j|	ƒ  S )	Nz!non-integer arg 1 for randrange()r   zempty range for randrange()z non-integer stop for randrange()r4   z'empty range for randrange() (%d,%d, %d)z non-integer step for randrange()zzero step for randrange())rO   Ú
_randbelow)
r/   ÚstartÚstopÚstepÚ_intZistartZistopÚwidthZistepÚnr1   r1   r2   r   ­   s4    

zRandom.randrangec             C   s   | j ||d ƒS )Nr4   )r   )r/   rF   Úbr1   r1   r2   r   Ù   s    zRandom.randintc             C   sº   | j }| j}||ƒ|ks$||ƒ|krN|jƒ }	||	ƒ}
x|
|krH||	ƒ}
q6W |
S ||krltdƒ ||ƒ | ƒS |dkr|tdƒ‚|| }|| | }|ƒ }
x|
|kr¨|ƒ }
q˜W ||
| ƒ| 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   r'   Ú
bit_lengthÚ_warnrO   )r/   r[   rC   ÚmaxsizeÚtypeZMethodZBuiltinMethodr   r'   ÚkÚrZremÚlimitr1   r1   r2   rU   ß   s&    


zRandom._randbelowc             C   s:   y| j t|ƒƒ}W n tk
r0   tdƒd ‚Y nX || S )Nz$Cannot choose from an empty sequence)rU   r?   rO   Ú
IndexError)r/   ÚseqÚir1   r1   r2   r   ÿ   s
    zRandom.choicec             C   s¢   |d krR| j }xŽttdt|ƒƒƒD ]*}||d ƒ}|| ||  ||< ||< q"W nLt}xFttdt|ƒƒƒD ]0}||ƒ |d  ƒ}|| ||  ||< ||< qjW d S )Nr4   )rU   ÚreversedÚranger?   rC   )r/   r0   r   Ú	randbelowrf   ÚjrY   r1   r1   r2   r     s    	 zRandom.shufflec             C   s(  t |tƒrt|ƒ}t |tƒs$tdƒ‚| j}t|ƒ}d|  koD|kn  sRtdƒ‚d g| }d}|dkr‚|dtt	|d dƒƒ 7 }||krÒt
|ƒ}x�t|ƒD ]0}||| ƒ}	||	 ||< ||| d  ||	< qœW nRtƒ }
|
j}xDt|ƒD ]8}||ƒ}	x|	|
k�r
||ƒ}	qöW ||	ƒ ||	 ||< qèW |S )	Nz>Population must be a sequence or set.  For dicts, use list(d).r   z,Sample larger than population or is negativeé   é   r*   r-   r4   )r9   Ú_SetrN   Ú	_SequencerP   rU   r?   rO   Ú_ceilÚ_logÚlistrh   ÚsetÚadd)r/   Ú
populationra   ri   r[   ÚresultZsetsizeZpoolrf   rj   ZselectedZselected_addr1   r1   r2   r     s6    


zRandom.sample)Úcum_weightsra   c               s°   | j ‰ˆd krN|d kr>t‰ tˆƒ‰‡ ‡‡‡fdd„t|ƒD ƒS ttj|ƒƒ‰n|d k	r^tdƒ‚tˆƒtˆƒkrvtdƒ‚t	j
‰ˆd ‰tˆƒd ‰‡‡‡‡‡‡fdd„t|ƒD ƒS )Nc                s   g | ]}ˆˆ ˆƒ ˆ ƒ ‘qS r1   r1   )rL   rf   )rY   rt   r   Útotalr1   r2   ú
<listcomp>c  s    z"Random.choices.<locals>.<listcomp>z2Cannot specify both weights and cumulative weightsz3The number of weights does not match the populationr4   c                s$   g | ]}ˆˆ ˆˆƒ ˆ d ˆƒ ‘qS )r   r1   )rL   rf   )Úbisectrv   Úhirt   r   rw   r1   r2   rx   l  s   r7   )r   rC   r?   rh   rq   Ú
_itertoolsÚ
accumulaterP   rO   Ú_bisectry   )r/   rt   Zweightsrv   ra   r1   )rY   ry   rv   rz   rt   r   rw   r2   r(   W  s     zRandom.choicesc             C   s   ||| | j ƒ   S )N)r   )r/   rF   r\   r1   r1   r2   r   s  s    zRandom.uniformç        ç      ð?c             C   sx   | j ƒ }y |d krdn|| ||  }W n tk
r<   |S X ||kr`d| }d| }|| }}||| || d   S )Ng      à?g      ð?)r   ÚZeroDivisionError)r/   ZlowZhighÚmodeÚurH   r1   r1   r2   r    y  s    	 
zRandom.triangularc             C   sT   | j }x@|ƒ }d|ƒ  }t|d  | }|| d }|t|ƒ krP qW |||  S )Ng      ð?g      à?g      @)r   ÚNV_MAGICCONSTrp   )r/   ÚmuÚsigmar   Úu1Úu2ÚzZzzr1   r1   r2   r   �  s    
zRandom.normalvariatec             C   s   t | j||ƒƒS )N)Ú_expr   )r/   r„   r…   r1   r1   r2   r   ¨  s    zRandom.lognormvariatec             C   s   t d| jƒ  ƒ | S )Ng      ð?)rp   r   )r/   Zlambdr1   r1   r2   r   ´  s    zRandom.expovariatec             C   sÔ   | j }|dkrt|ƒ  S d| }|td||  ƒ }xN|ƒ }tt| ƒ}|||  }|ƒ }	|	d||  k s~|	d| t|ƒ kr6P q6W d| }
|
| d|
|   }|ƒ }|dkrÀ|t|ƒ t }n|t|ƒ t }|S )Ng�íµ ÷Æ°>g      à?g      ð?)r   ÚTWOPIÚ_sqrtÚ_cosÚ_pir‰   Ú_acos)r/   r„   Zkappar   Úsrb   r†   rˆ   Údr‡   ÚqÚfZu3Zthetar1   r1   r2   r   Ç  s&    
$zRandom.vonmisesvariatec             C   s   |dks|dkrt dƒ‚| j}|dkrÜtd| d ƒ}|t }|| }x’|ƒ }d|  k o`dk n  shqHd|ƒ  }t|d|  ƒ| }	|t|	ƒ }
|| | }|||	  |
 }|t d|  dksÎ|t|ƒkrH|
| S qHW nÀ|dk�r|ƒ }x|dk�r |ƒ }qîW t|ƒ | S x‚|ƒ }t| t }|| }|dk�rD|d|  }
nt|| | ƒ }
|ƒ }|dk�r|||
|d  k�rŽP n|t|
 ƒk�rP �qW |
| S d S )Ng        z*gammavariate: alpha and beta must be > 0.0g      ð?g       @gH¯¼šò×z>gËPÊÿÿï?g      @)rO   r   r‹   ÚLOG4rp   r‰   ÚSG_MAGICCONSTÚ_e)r/   ÚalphaÚbetar   ZainvZbbbZcccr†   r‡   Úvr0   rˆ   rb   r‚   r\   Úpr1   r1   r2   r   ÷  sJ    
 



zRandom.gammavariatec             C   s`   | j }| j}d | _|d krT|ƒ t }tdtd|ƒ  ƒ ƒ}t|ƒ| }t|ƒ| | _|||  S )Ng       @g      ð?g       À)r   r.   rŠ   r‹   rp   rŒ   Ú_sin)r/   r„   r…   r   rˆ   Zx2piZg2radr1   r1   r2   r!   ?  s    
zRandom.gaussc             C   s0   | j |dƒ}|dkrdS ||| j |dƒ  S d S )Ng      ð?r   g        )r   )r/   r–   r—   Úyr1   r1   r2   r"   t  s    
zRandom.betavariatec             C   s   d| j ƒ  }d|d|   S )Ng      ð?)r   )r/   r–   r‚   r1   r1   r2   r#   †  s    zRandom.paretovariatec             C   s"   d| j ƒ  }|t|ƒ d|   S )Ng      ð?)r   rp   )r/   r–   r—   r‚   r1   r1   r2   r$   �  s    zRandom.weibullvariate)N)Nr,   )N)N)r~   r   N)#Ú__name__Ú
__module__Ú__qualname__rJ   r3   r   r%   r&   rR   rS   rT   rC   r   r   ÚBPFr`   Ú_MethodTypeÚ_BuiltinMethodTyperU   r   r   r   r(   r   r    r   r   r   r   r   r!   r"   r#   r$   Ú__classcell__r1   r1   )rI   r2   r   G   s6   
	 ,

:
0H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 jtdƒdƒd? t S )Nr5   r6   r-   )rC   rD   Ú_urandomÚ	RECIP_BPF)r/   r1   r1   r2   r   ¤  s    zSystemRandom.randomc             C   sP   |dkrt dƒ‚|t|ƒkr$tdƒ‚|d d }tjt|ƒdƒ}||d | ? S )Nr   z(number of bits must be greater than zeroz#number of bits should be an integerr5   é   r6   )rO   rC   rP   rD   r£   )r/   ra   Znumbytesr0   r1   r1   r2   r'   ¨  s    zSystemRandom.getrandbitsc             O   s   d S )Nr1   )r/   ÚargsÚkwdsr1   r1   r2   r   ²  s    zSystemRandom.seedc             O   s   t dƒ‚d S )Nz*System entropy source does not have state.)ÚNotImplementedError)r/   r¦   r§   r1   r1   r2   Ú_notimplemented¶  s    zSystemRandom._notimplementedN)	rœ   r�   rž   r   r'   r   r©   r%   r&   r1   r1   r1   r2   r)   œ  s
   
c             C   sÄ   dd l }t| d|jƒ d}d}d}d
}|j ƒ }x@t| ƒD ]4}	||Ž }
||
7 }||
|
  }t|
|ƒ}t|
|ƒ}q8W |j ƒ }tt|| dƒddd� ||  }t||  ||  ƒ}td	||||f ƒ d S )Nr   Útimesg        g    _ Br-   zsec,ú )Úendz"avg %g, stddev %g, min %g, max %g
g    _ Â)ÚtimeÚprintrœ   rh   ÚminÚmaxÚroundr‹   )r[   Úfuncr¦   r­   rw   ZsqsumZsmallestZlargestZt0rf   r0   Zt1ZavgZstddevr1   r1   r2   Ú_test_generator½  s&    
r³   éÐ  c             C   sÄ   t | tf ƒ 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 )Nç        ç      ð?ç{®Gáz„?çš™™™™™¹?ç       @ç      à?çÍÌÌÌÌÌì?ç      4@ç      i@ç      @)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¾   çUUUUUUÕ?)rµ   r¶   r¿   )	r³   r   r   r   r   r   r!   r"   r    )ÚNr1   r1   r2   Ú_testÓ  s     rÁ   Ú__main__g      à¿)r´   )NÚwarningsr   r^   Útypesr   r    r   r¡   Zmathr   rp   r   r‰   r   r�   r   r•   r	   ro   r
   r‹   r   rŽ   r   rŒ   r   rš   Úosr   r£   Ú_collections_abcr   rm   r   rn   Zhashlibr   rB   Ú	itertoolsr{   ry   r}   Ú__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'   rœ   r1   r1   r1   r2   Ú<module>(   sl   
    Y!

