
    ir                         / S Qr SSKJr  SSKJr   " S S\5      r\" 5       r\R                  r\R                  r	\R                  r
\R                  r\R                  r\R                  rSSKJrJrJrJr  g))StrongRandomgetrandbits	randrangerandintchoiceshufflesample    )Random)is_native_intc                   B    \ rS rSrSS jrS rS rS rS rS r	S	 r
S
rg)r      Nc                 ~    Uc  Uc  S U l         g Ub
  Uc  X l         g Uc  Ub  UR                  U l         g [        S5      e)Nz(Cannot specify both 'rng' and 'randfunc')	_randfuncread
ValueError)selfrngrandfuncs      O/var/www/html/trading/venv/lib/python3.13/site-packages/Crypto/Random/random.py__init__StrongRandom.__init__    sC    !DN!ck%N#/ XXDNGHH    c           	          U R                   c$  [        R                  " 5       R                  U l         SU-  S-
  nU[	        U R                  [        US5      5      5      -  $ )z%Return an integer with k random bits.      )r   r
   newr   bytes_to_longceil_div)r   kmasks      r   r   StrongRandom.getrandbits*   sM     >>!#ZZ\..DNQ!|mDNN8Aq>$BCCCr   c           	         [        U5      S:X  a  Uu  p#nOF[        U5      S:X  a  Uu  p#SnO0[        U5      S:X  a	  Uu  nSnSnO[        S[        U5      4-  5      e[        U5      (       a   [        U5      (       a  [        U5      (       d  [        S5      eUS:X  a  [        S5      e[	        X2-
  U5      nUS:  a  SnUS:  a  [        SU< S	U< S	U< S
35      eUnXe:  a!  U R                  [        U5      5      nXe:  a  M!  X$U-  -   $ )zcrandrange([start,] stop[, step]):
Return a randomly-selected element from range(start, stop, step).      r   r	   z.randrange expected at most 3 arguments, got %dz$randrange requires integer argumentsz(randrange step argument must not be zerozempty range for randrange(z, ))len	TypeErrorr   r   r   r   size)r   argsstartstopstepnum_choicesrs          r   r   StrongRandom.randrange2   s    t9>"&U$Y!^ MUDY!^GTEDLPSTXPY|[\\e$$M$,?,?d##BCC19GHHt|T2?K?tUYZ[[   k!23A  q!!r   c                     [        U5      (       a  [        U5      (       d  [        S5      eU R                  XS-   5      nXs=::  a  U::  d   e   eU$ )z0Return a random integer N such that a <= N <= b.z"randint requires integer argumentsr   )r   r'   r   )r   abNs       r   r   StrongRandom.randintS   sM    Q}Q'7'7@AANN1c"{{{{r   c                 n    [        U5      S:X  a  [        S5      eXR                  [        U5      5         $ )zbReturn a random element from a (non-empty) sequence.

If the seqence is empty, raises IndexError.
r	   zempty sequence)r&   
IndexErrorr   )r   seqs     r   r   StrongRandom.choice[   s1    
 s8q=-..>>#c(+,,r   c                     [        [        U5      S-
  SS5       H%  nU R                  SUS-   5      nX   X   sX'   X'   M'     g)zShuffle the sequence in place.r   r	   N)ranger&   r   )r   xijs       r   r   StrongRandom.shuffled   sF     s1vaxB'Aq!A#&AqtJAD!$ (r   c                     [        U5      nX#:  a  [        S5      e/ n0 n[        U5       HA  nSnUb  Xu;   a  U R                  U5      nUc  M  Xu;   a  M  UR	                  X   5        SXW'   MC     U$ )zNReturn a k-length list of unique elements chosen from the population sequence.zsample larger than populationNr   )r&   r   r;   r   append)r   
populationr   r-   retvalselectedr=   r.   s           r   r   StrongRandom.samplen   sy     *o?<==qAA)q}NN;/ )q}MM*-(HK  r   )r   )NN)__name__
__module____qualname____firstlineno__r   r   r   r   r   r   r   __static_attributes__ r   r   r   r      s(    ID"B-$r   r   )r   r   long_to_bytesr(   N)__all__Cryptor
   Crypto.Util.py3compatr   objectr   _rr   r   r   r   r   r   Crypto.Util.numberr   r   rL   r(   rK   r   r   <module>rS      sj   2 a  /^6 ^@ ^nnLL	
**	
**	 L Kr   