<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
a
    XC?hz                     @   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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)d d	l*Z*zd d
l+m,Z+ W n e-y   d d
l.m,Z+ Y n0 g dZ/ded ed Z0edZ1ded Z2dZ3de3  Z4G dd de*j5Z5G dd de5Z6e5 Z7e7j8Z8e7j9Z9e7j:Z:e7j;Z;e7j<Z<e7j=Z=e7j>Z>e7j?Z?e7j@Z@e7jAZAe7jBZBe7jCZCe7jDZDe7jEZEe7jFZFe7jGZGe7jHZHe7jIZIe7jJZJe7jKZKe7jLZLe7jMZMe7jNZNdd ZOd ddZPeQe)dre)jRe7j8d eSdkreP  d	S )!    )warn)logexppieceil)sqrtacoscossin)taufloor)urandom)SetSequence)
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                       s&  e Zd ZdZdAddZdB fdd	Z fdd	Z fd
dZdd Zdd Z	dd Z
dd Zdd Zde> fddZeZdd ZdCddZdd Zdd  ZdDd!d"Zdd#d$d%ZdEddd&d'd(Zd)d* ZdFd-d.Zd/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Zd;d< Zd=d> Z d?d@ Z!  Z"S )Gr      Nc                 C   s   |  | d | _d S N)r'   
gauss_next)selfx r:   +/opt/alt/python39/lib64/python3.9/random.py__init__u   s    
zRandom.__init__r4   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|}nj|d	krt |tttfrt |tr| }t	
|t|  d
}n&t |td t	ttttfstdtd	 t | d | _d S )N   zlatin-1r      iCB l    r4   bigzSeeding based on hashing is deprecated
since Python 3.9 and will be removed in a subsequent version. The only 
supported seed types are: None, int, float, str, bytes, and bytearray.)
isinstancestrbytesdecodeordmaplen	bytearrayencodeint
from_bytes_sha512Zdigesttypefloat_warnDeprecationWarningsuperr'   r7   )r8   aversionr9   c	__class__r:   r;   r'   ~   s"    
zRandom.seedc                    s   | j t  | jfS r6   )VERSIONrR   r   r7   r8   rV   r:   r;   r      s    zRandom.getstatec              
      s   |d }|dkr*|\}}| _ t | nv|dkr|\}}| _ ztdd |D }W n* ty~ } zt|W Y d }~n
d }~0 0 t | ntd|| jf d S )Nr   r5   r4   c                 s   s   | ]}|d  V  qdS )l        Nr:   ).0r9   r:   r:   r;   	<genexpr>       z"Random.setstate.<locals>.<genexpr>z?state with version %s passed to Random.setstate() of version %s)r7   rR   r(   tuple
ValueError	TypeErrorrX   )r8   staterT   Zinternalstater   rV   r:   r;   r(      s    zRandom.setstatec                 C   s   |   S r6   )r   rY   r:   r:   r;   __getstate__   s    zRandom.__getstate__c                 C   s   |  | d S r6   )r(   )r8   r`   r:   r:   r;   __setstate__   s    zRandom.__setstate__c                 C   s   | j d|  fS )Nr:   )rW   r   rY   r:   r:   r;   
__reduce__   s    zRandom.__reduce__c                K   sJ   | j D ]>}d|jv r qFd|jv r.| j| _ qFd|jv r| j| _ qFqd S )N
_randbelowr   r$   )__mro____dict___randbelow_with_getrandbitsrd   _randbelow_without_getrandbits)clskwargsrU   r:   r:   r;   __init_subclass__   s    	



zRandom.__init_subclass__c                 C   s4   |sdS | j }| }||}||kr0||}q|S )Nr   )r   
bit_length)r8   nr   krr:   r:   r;   rg      s    
z"Random._randbelow_with_getrandbitsr=   c                 C   sj   | j }||kr$td t| | S |dkr0dS || }|| | }| }||krZ| }qJt|| | 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   )r$   rP   _floor)r8   rm   maxsizer$   Zremlimitro   r:   r:   r;   rh      s    z%Random._randbelow_without_getrandbitsc                 C   s   |  |d |dS )N   little)r   to_bytesr8   rm   r:   r:   r;   r"     s    zRandom.randbytesc           	      C   s  t |}||krtd|d u r:|dkr2| |S tdt |}||krRtd|| }|dkrx|dkrx|| | S |dkrtd|||f t |}||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()r=   z(empty range for randrange() (%d, %d, %d)z non-integer step for randrange()zzero step for randrange())rK   r^   rd   )	r8   startstopstepZistartZistopwidthZisteprm   r:   r:   r;   r%   "  s4    

zRandom.randrangec                 C   s   |  ||d S )Nr=   )r%   r8   rS   br:   r:   r;   r#   N  s    zRandom.randintc                 C   s   ||  t| S r6   )rd   rH   )r8   seqr:   r:   r;   r   W  s    zRandom.choicec                 C   s   |d u rN| j }ttdt|D ]*}||d }|| ||  ||< ||< q nTtdtd t}ttdt|D ]0}|| |d  }|| ||  ||< ||< qpd S )Nr=   zuThe *random* parameter to shuffle() has been deprecated
since Python 3.9 and will be removed in a subsequent version.r4   )rd   reversedrangerH   rP   rQ   rp   )r8   r9   r$   	randbelowijr   r:   r:   r;   r)   \  s    	zRandom.shuffle)countsc                   s  t trtdtd tt ts0tdt}|d urtt	|t|kr`t
d }t |tsztd|dkrt
d| jt||d}t  fd	d
|D S | j}d|  kr|ksn t
dd g| }d}	|dkr|	dtt|d d 7 }	||	kr\t}
t|D ]2}||| }|
| ||< |
|| d  |
|< q&nNt }|j}t|D ]8}||}||v r||}q||| | ||< qp|S )Nz\Sampling from a set deprecated
since Python 3.9 and will be removed in a subsequent version.r4   zAPopulation 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)rn   c                    s   g | ]} | qS r:   r:   )rZ   sr   Z
cum_counts
populationr:   r;   
<listcomp>  r\   z!Random.sample.<locals>.<listcomp>z,Sample larger than population or is negative      r.   r5   r=   )rB   _SetrP   rQ   r]   	_Sequencer_   rH   list_accumulater^   poprK   r&   r   _bisectrd   _ceil_logsetadd)r8   r   rn   r   rm   totalZ
selectionsr   resultZsetsizeZpoolr   r   ZselectedZselected_addr:   r   r;   r&   v  sT    5






zRandom.sample)cum_weightsrn   c                   s   | j td u r|d u rHtd7 fddtd |D S ztt|W q ty   t|tsr |}td|d Y q0 n|d urtdtkrt	dd d dkrt	dt
 d	  fd
dtd |D S )N        c                    s   g | ]}    qS r:   r:   rZ   r   )r   rm   r   r$   r:   r;   r     r\   z"Random.choices.<locals>.<listcomp>z4The number of choices must be a keyword argument: k=z2Cannot specify both weights and cumulative weightsz3The number of weights does not match the populationr?   z*Total of weights must be greater than zeror=   c                    s$   g | ]}   d  qS )r   r:   r   )r   r   hir   r$   r   r:   r;   r     s   )r$   rH   rp   _repeatr   r   r_   rB   rK   r^   r   )r8   r   Zweightsr   rn   r:   )r   r   r   r   rm   r   r$   r   r;   r     s<    

zRandom.choicesc                 C   s   ||| |     S r6   r$   r{   r:   r:   r;   r+     s    zRandom.uniformr   r1   c                 C   sz   |   }z |d u rdn|| ||  }W n ty>   | Y S 0 ||krbd| }d| }|| }}||| t||   S )N      ?r1   )r$   ZeroDivisionError_sqrt)r8   lowhighmodeurU   r:   r:   r;   r*     s    	 

zRandom.triangularc                 C   sP   | j }| }d|  }t|d  | }|| d }|t| krqDq|||  S )Nr1   r   r0   )r$   NV_MAGICCONSTr   )r8   musigmar$   u1u2zZzzr:   r:   r;   r      s    
zRandom.normalvariatec                 C   s`   | j }| j}d | _|d u rT| t }tdtd|   }t|| }t|| | _|||  S )Ng       r1   )r$   r7   TWOPIr   r   _cos_sin)r8   r   r   r$   r   Zx2piZg2radr:   r:   r;   r   ,  s    
zRandom.gaussc                 C   s   t | ||S r6   )_expr    )r8   r   r   r:   r:   r;   r   R  s    zRandom.lognormvariatec                 C   s   t d|    | S Nr1   )r   r$   )r8   Zlambdr:   r:   r;   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   r1   )r$   r   r   r   _pir   _acos)r8   r   Zkappar$   r   ro   r   r   dr   qfZu3Zthetar:   r:   r;   r,   m  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.0r1   r/   gHz>gP?r2   )r^   r$   r   LOG4r   r   SG_MAGICCONST_e)r8   alphabetar$   ZainvZbbbZcccr   r   vr9   r   ro   r   r|   pr:   r:   r;   r     s@    
 

zRandom.gammavariatec                 C   s(   |  |d}|r$|||  |d  S dS )Nr1   r   )r   )r8   r   r   yr:   r:   r;   r     s    zRandom.betavariatec                 C   s   d|    }d|d|   S r   r   )r8   r   r   r:   r:   r;   r!     s    zRandom.paretovariatec                 C   s"   d|    }|t| d|   S r   )r$   r   )r8   r   r   r   r:   r:   r;   r-     s    zRandom.weibullvariate)N)Nr4   )Nr=   )N)N)r   r1   N)#__name__
__module____qualname__rX   r<   r'   r   r(   ra   rb   rc   rk   rg   BPFrh   rd   r"   r%   r#   r   r)   r&   r   r+   r*   r    r   r   r   r,   r   r   r!   r-   __classcell__r:   r:   rV   r;   r   e   s<   
	*!
,	
c&
&
*Ar   c                   @   s<   e Zd Zd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 )Nr>   rA   r5   )rK   rL   _urandom	RECIP_BPFrY   r:   r:   r;   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 non-negativer>   rs   rA   )r^   rK   rL   r   )r8   rn   Znumbytesr9   r:   r:   r;   r     s
    zSystemRandom.getrandbitsc                 C   s   t |S r6   )r   rv   r:   r:   r;   r"     s    zSystemRandom.randbytesc                 O   s   d S r6   r:   r8   argskwdsr:   r:   r;   r'   %  s    zSystemRandom.seedc                 O   s   t dd S )Nz*System entropy source does not have state.)NotImplementedErrorr   r:   r:   r;   _notimplemented)  s    zSystemRandom._notimplementedN)
r   r   r   r$   r   r"   r'   r   r   r(   r:   r:   r:   r;   r   
  s   	r   c                    s   ddl m}m} ddlm} | } fddt| D }| }||}	|||	}
t|}t|}t|| dd|  dj	  td	|	|
||f  d S )
Nr   )stdevfmean)perf_counterc                    s   g | ]}  qS r:   r:   r   r   funcr:   r;   r   X  r\   z#_test_generator.<locals>.<listcomp>z.3fz sec, z times z"avg %g, stddev %g, min %g, max %g
)
Z
statisticsr   r   timer   r   minmaxprintr   )rm   r   r   r   Zmeanr   Zt0datat1Zxbarr   r   r   r:   r   r;   _test_generatorS  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 )Nr:   )r   r1   )g{Gz?r1   )皙?r1   )r   r/   )r   r1   )g?r1   )r1   r1   )r/   r1   )g      4@r1   )g      i@r1   )      @r   )r   r1   gUUUUUU?)	r   r$   r    r   r,   r   r   r   r*   )Nr:   r:   r;   _testd  s     r   fork)Zafter_in_child__main__)r   )Twarningsr   rP   Zmathr   r   r   r   r   r   r   r   r   r   r   r   r	   r   r
   r   r   r   r   r   r   rp   osr   r   _collections_abcr   r   r   r   	itertoolsr   r   r   r   r   r   _osZ_randomrM   r   ImportErrorZhashlib__all__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!   r-   r   r(   r   r"   r   r   hasattrregister_at_forkr   r:   r:   r:   r;   <module>0   sp   
     *,

