
    9j                       d Z ddlmZ ddlZddlmZ ddlZddlmZm	Z	 ddl
mZmZmZ g dZd	 Zd
 Zedd       Zedd       Zd ZeZeZedd       Zed        Zedd       Zed        Zedd       Zeeddd              Zy)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   )_dtypes_impl_util)array_or_scalar	ArrayLike
normalizer)seedrandom_samplesamplerandomrandrandnnormalchoicerandintshuffleuniformc                 ,    dd l mc m}  | j                  S )Nr   )torch._dynamo.config_dynamoconfiguse_numpy_random_stream)r   s    S/media/conek/DATA/Code/OCR/venv/lib/python3.12/site-packages/torch/_numpy/random.pyuse_numpy_randomr   %   s    )))))    c                B     t        j                          fd       }|S )Nc            	        t               s | i |S dd l}ddlm t	        |j
                  j                        }t        fd| D              } |j                         D ci c].  \  }}|t        |      r|j                  j                         n|0 }}} || i |}t        ||j                        r t        j                  |            }|S c c}}w )Nr   r   ndarrayc              3  n   K   | ],  }t        |      r|j                  j                         n| . y wN)
isinstancetensornumpy).0argr!   s     r   	<genexpr>z-deco_stream.<locals>.inner.<locals>.<genexpr>9   s1      LOjg&>

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

C :c7+CSZZ%%'LD 
 t$t$E %/ 67Ls   &3C)	functoolswraps)r7   r8   s   ` r   deco_streamr;   ,   s%    __T 6 Lr   c                H    |  t         j                  j                  |        y y r#   )r/   r   manual_seed)r   s    r   r   r   L   s      & r   c                    | d} t        j                         j                  }t        j                  | |      j                         }t        || dk(        S N dtypereturn_scalarr   default_dtypesfloat_dtyper/   emptyuniform_r   sizerB   valuess      r   r   r   R   sJ    |'')55E[[U+446F6<<r   c                 &    | dk(  rd } t        |       S )Nr@   )r   rK   s    r   r   r   [   s    rzr   c                    |d}t        j                         j                  }t        j                  ||      j                  | |      }t        ||dk(        S r?   rE   )lowhighrK   rB   rL   s        r   r   r   e   sN    |'')55E[[U+44S$?F6<<r   c                     t        j                         j                  }t        j                  | |      }t        || dk(        S )NrA   r@   rC   )r   rF   rG   r/   r   r   rJ   s      r   r   r   n   s7    '')55E[[U+F6<<r   c                    |d}t        j                         j                  }t        j                  ||      j                  | |      }t        ||dk(        S r?   )r   rF   rG   r/   rH   normal_r   )locscalerK   rB   rL   s        r   r   r   u   sN    |'')55E[[U+33C?F6<<r   c                   ddl m} t        | t        j                        r| }n$t        | |      r| j
                  }nt        d      t        j                  |j                  d         }||   }|j                  |       y )Nr   r    z'We do not random.shuffle lists in-placer   )
r*   r!   r$   r/   Tensorr%   NotImplementedErrorrandpermshapecopy_)xr!   r%   permxps        r   r   r   ~   sd     "!U\\"	Aw	!"KLL>>&,,q/*D	B
LLr   c                    |d}t        |t        t        f      s|f}|d| }} t        j                  | ||      }t        |t        |dk(        S )Nr@   r   rN   rC   )r$   r-   listr/   r   r   int)rP   rQ   rK   rL   s       r   r   r      sT    |dUDM*w|sT]]340F63dbjAAr   c                8   | j                         dk(  rt        j                  |       } |d}n&t        j                  |      rd}|D ]  }||z  }	 n|}|%t        j
                  |       | j                  d   z  }t        t        j                  |j                        j                        }t        |j                         dz
        |kD  rt        d      t        j                  |||      }t        j                  |      r|j                  |      }| |   }|S )Nr   r         ?zprobabilities do not sum to 1.)replacement)numelr/   aranger   is_sequence	ones_liker[   r   finforB   epsabssum
ValueErrormultinomialreshape)	arK   replacepnum_elelatolindicessampless	            r   r   r      s     	wwyA~LLO
 |			4	  	BbLF	  	yOOA+ AGG$(()D
1557S=D 9:: 6w?G//$'jGNr   r#   )g        rd   N)NN)NTN)rq   r	   rs   zArrayLike | None)__doc__
__future__r   r9   mathr   r/    r   r   _normalizationsr   r	   r
   __all__r   r;   r   r   r   r   r   r   r   r   r   r   r   r@   r   r   <module>r      s    #    ! C C*@ ' '
 = = 
	 = = = = = =    B B "  "r   