
    קg*                    R   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dS )!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    O/var/www/html/ai-engine/env/lib/python3.11/site-packages/torch/_numpy/random.pyuse_numpy_randomr   %   s&    )))))))))))    c                F     t          j                    fd            }|S )Nc                 h   t                      s | i |S dd l}ddlm t	          |j        j                  }t          fd| D                       } fd|                                D             } || i |}t          ||j                  r t          j        |                    }|S )Nr   r   ndarrayc              3  n   K   | ]/}t          |          r|j                                        n|V  0d S N
isinstancetensornumpy).0argr"   s     r   	<genexpr>z-deco_stream.<locals>.inner.<locals>.<genexpr>9   sV        LOjg&>&>G
  """C     r   c                n    i | ]1\  }}|t          |          r|j                                        n|2S  r%   )r)   keyvalr"   s      r   
<dictcomp>z.deco_stream.<locals>.inner.<locals>.<dictcomp><   sQ       C :c7+C+CLSZ%%'''  r   )r   r(   _ndarrayr"   getattrr   __name__tupleitemsr&   torch	as_tensor)argskwdsr(   fvaluer"   funcs        @r   innerzdeco_stream.<locals>.inner-   s   !! 	4&&&&LLL))))))dm44A     SW    D    $

  D
 At$t$$E %// 8 6 677Lr   )	functoolswraps)r<   r=   s   ` r   deco_streamr@   ,   s8    _T    6 Lr   c                L    | !t           j                            |            d S d S r$   )r6   r   manual_seed)r   s    r   r   r   L   s,      &&&&& r   c                    | d} t          j                    j        }t          j        | |                                          }t          || dk              S Nr-   dtypereturn_scalarr   default_dtypesfloat_dtyper6   emptyuniform_r	   sizerF   valuess      r   r   r   R   sT    |'))5E[U+++4466F6<<<<r   c                 0    | dk    rd } t          |           S )Nr-   )r   rO   s    r   r   r   [   s    rzzr                 ?c                    |d}t          j                    j        }t          j        ||                              | |          }t          ||dk              S rD   rI   )lowhighrO   rF   rP   s        r   r   r   e   sX    |'))5E[U+++44S$??F6<<<<r   c                     t          j                    j        }t          j        | |          }t          || dk              S )NrE   r-   rG   )r   rJ   rK   r6   r   r	   rN   s      r   r   r   n   s>    '))5E[U+++F6<<<<r   c                    |d}t          j                    j        }t          j        ||                              | |          }t          ||dk              S rD   )r   rJ   rK   r6   rL   normal_r	   )locscalerO   rF   rP   s        r   r   r   u   sX    |'))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                   }||         }|	                    |           d S )Nr   r!   z'We do not random.shuffle lists in-placer   )
r1   r"   r&   r6   Tensorr'   NotImplementedErrorrandpermshapecopy_)xr"   r'   permxps        r   r   r   ~   s     "!!!!!!U\"" M	Aw		 M!"KL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   rR   rG   )r&   r4   listr6   r   r	   int)rV   rW   rO   rP   s       r   r   r      sf    |dUDM** w|sT]34000F63dbjAAAAr   Tar
   pOptional[ArrayLike]c                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          |                                dz
            |k    rt          d          t          j        |||          }t          j        |          r|                    |          }| |         }|S )Nr   r   rT   zprobabilities do not sum to 1.)replacement)numelr6   aranger   is_sequence	ones_likera   r   finforF   epsabssum
ValueErrormultinomialreshape)	ri   rO   replacerj   num_elelatolindicessampless	            r   r   r      s&    	wwyyA~~LOO
 |		4	 	   	 	BbLFF	  	yOA+ AG$$())D
15577S=D  9::: 6w???G (//$''jGNr   r$   )rS   rT   N)NN)NTN)ri   r
   rj   rk   )__doc__
__future__r   r>   mathr   typingr   r6    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 C C C C C C C C  * * *  @ ' ' ' '
 = = = =   
	 = = = = = = = = = = =     B B B B " " " "  " " "r   