
    sg*                       d Z ddlmZ ddlZddlm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)Optional   )_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    F/var/www/html/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)r8   r9   s   ` r   deco_streamr<   ,   s%    __T 6 Lr   c                H    |  t         j                  j                  |        y y r$   )r0   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_dtyper0   emptyuniform_r	   sizerC   valuess      r   r   r   R   sJ    |'')55E[[U+446F6<<r   c                 &    | dk(  rd } t        |       S )NrA   )r   rL   s    r   r   r   [   s    rzr   c                    |d}t        j                         j                  }t        j                  ||      j                  | |      }t        ||dk(        S r@   rF   )lowhighrL   rC   rM   s        r   r   r   e   sN    |'')55E[[U+44S$?F6<<r   c                     t        j                         j                  }t        j                  | |      }t        || dk(        S )NrB   rA   rD   )r   rG   rH   r0   r   r	   rK   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   rG   rH   r0   rI   normal_r	   )locscalerL   rC   rM   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%   r0   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 )NrA   r   rO   rD   )r%   r.   listr0   r   r	   int)rQ   rR   rL   rM   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)numelr0   aranger   is_sequence	ones_liker\   r   finforC   epsabssum
ValueErrormultinomialreshape)	arL   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        re   N)NN)NTN)rr   r
   rt   zOptional[ArrayLike])__doc__
__future__r   r:   mathr   typingr   r0    r   r   _normalizationsr	   r
   r   __all__r   r<   r   r   r   r   r   r   r   r   r   r   r   rA   r   r   <module>r      s    #     ! C C*@ ' '
 = = 
	 = = = = = =    B B "  "r   