
    [Th*                    (   S r SSKJr  SSKrSSKJr  SSKJr  SSKrSSK	J
r
Jr  SSKJrJrJr  / S	QrS
 rS r\SS j5       r\SS j5       rS r\r\r\SS j5       r\S 5       r\SS j5       r\S 5       r\SS j5       r\\SSS jj5       5       rg)zWrapper to mimic (parts of) np.random API surface.

NumPy has strict guarantees on reproducibility etc; here we don't give any.

Q: default dtype is float64 in numpy

    )annotationsN)sqrt)Optional   )_dtypes_impl_util)array_or_scalar	ArrayLike
normalizer)seedrandom_samplesamplerandomrandrandnnormalchoicerandintshuffleuniformc                 ,    SS K Js  Jn   U R                  $ )Nr   )torch._dynamo.config_dynamoconfiguse_numpy_random_stream)r   s    K/var/www/auris/envauris/lib/python3.13/site-packages/torch/_numpy/random.pyuse_numpy_randomr   %   s    )))))    c                F   ^  [         R                  " T 5      U 4S j5       nU$ )Nc            	       >^ [        5       (       d  T" U 0 UD6$ SS KnSSKJm  [	        UR
                  TR                  5      n[        U4S jU  5       5      n UR                  5        VVs0 s H3  u  pEU[        UT5      (       a  UR                  R                  5       OU_M5     nnnU" U 0 UD6n[        XbR                  5      (       a  T" [        R                  " U5      5      nU$ s  snnf )Nr   r   ndarrayc              3  ~   >#    U  H2  n[        UT5      (       a  UR                  R                  5       OUv   M4     g 7fN)
isinstancetensornumpy).0argr"   s     r   	<genexpr>-deco_stream.<locals>.inner.<locals>.<genexpr>9   s3      SWCjg&>&>

  "CGSWs   :=)r   r'   _ndarrayr"   getattrr   __name__tupleitemsr%   r&   torch	as_tensor)	argskwdsr'   fkeyvalvaluer"   funcs	          @r   innerdeco_stream.<locals>.inner-   s    !!&&&)dmm4A  SW D
 !%

 ,HC :c7+C+CSZZ%%'L ,  
 t$t$E %// 67Ls   ,:C))	functoolswraps)r9   r:   s   ` r   deco_streamr>   ,   s%    __T 6 Lr   c                J    U b   [         R                  R                  U 5        g g r$   )r1   r   manual_seed)r   s    r   r   r   L   s      & r   c                    U c  Sn [         R                  " 5       R                  n[        R                  " XS9R                  5       n[        X S:H  S9$ N dtypereturn_scalarr   default_dtypesfloat_dtyper1   emptyuniform_r	   sizerE   valuess      r   r   r   R   sF    |'')55E[[+446F6<<r   c                 (    U S:X  a  S n [        U 5      $ )NrC   )r   rN   s    r   r   r   [   s    rzr   c                    Uc  Sn[         R                  " 5       R                  n[        R                  " X#S9R                  X5      n[        XBS:H  S9$ rB   rH   )lowhighrN   rE   rO   s        r   r   r   e   sH    |'')55E[[+44S?F6<<r   c                     [         R                  " 5       R                  n[        R                  " XS9n[        X S:H  S9$ )NrD   rC   rF   )r   rI   rJ   r1   r   r	   rM   s      r   r   r   n   s3    '')55E[[+F6<<r   c                    Uc  Sn[         R                  " 5       R                  n[        R                  " X#S9R                  X5      n[        XBS:H  S9$ rB   )r   rI   rJ   r1   rK   normal_r	   )locscalerN   rE   rO   s        r   r   r   u   sH    |'')55E[[+33C?F6<<r   c                   SSK Jn  [        U [        R                  5      (       a  U nO([        X5      (       a  U R
                  nO[        S5      e[        R                  " UR                  S   5      nX#   nUR                  U5        g )Nr   r!   z'We do not random.shuffle lists in-placer   )
r,   r"   r%   r1   Tensorr&   NotImplementedErrorrandpermshapecopy_)xr"   r&   permxps        r   r   r   ~   sf     "!U\\""	A		!"KLL>>&,,q/*D	B
LLr   c                    Uc  Sn[        U[        [        45      (       d  U4nUc  SU p[        R                  " XUS9n[        U[        US:H  S9$ )NrC   r   rQ   rF   )r%   r/   listr1   r   r	   int)rS   rT   rN   rO   s       r   r   r      sS    |dUDM**w|sT]]340F63dbjAAr   c                X   U R                  5       S:X  a  [        R                  " U 5      n Uc  SnO-[        R                  " U5      (       a  SnU H  nXE-  nM	     OUnUc&  [        R
                  " U 5      U R                  S   -  n[        [        R                  " UR                  5      R                  5      n[        UR                  5       S-
  5      U:  a  [        S5      e[        R                  " X4US9n[        R                  " U5      (       a  UR                  U5      nX   nU$ )Nr   r         ?zprobabilities do not sum to 1.)replacement)numelr1   aranger   is_sequence	ones_liker^   r   finforE   epsabssum
ValueErrormultinomialreshape)	arN   replacepnum_elelatolindicessampless	            r   r   r      s     	wwyA~LLO
 |			4	 	 BLF   	yOOA+ AGG$(()D
1557S=D 9:: w?G//$'jGNr   r$   )g        rg   N)NN)NTN)rt   r
   rv   zOptional[ArrayLike])__doc__
__future__r   r<   mathr   typingr   r1    r   r   _normalizationsr	   r
   r   __all__r   r>   r   r   r   r   r   r   r   r   r   r   r   rC   r   r   <module>r      s    #     ! C C*@ ' '
 = = 
	 = = = = = =    B B "  "r   