
    Bj                    F   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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   )_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    V/var/www/html/Carbon-Document/venv/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#   )r5   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_dtyper5   emptyuniform_r   sizerE   valuess      r   r   r   R   sT    |'))5E[U+++4466F6<<<<r   c                 0    | dk    rd } t          |           S )Nr,   )r   rN   s    r   r   r   [   s    rzzr                 ?c                    |d}t          j                    j        }t          j        ||                              | |          }t          ||dk              S rC   rH   )lowhighrN   rE   rO   s        r   r   r   e   sX    |'))5E[U+++44S$??F6<<<<r   c                     t          j                    j        }t          j        | |          }t          || dk              S )NrD   r,   rF   )r   rI   rJ   r5   r   r   rM   s      r   r   r   n   s>    '))5E[U+++F6<<<<r   c                    |d}t          j                    j        }t          j        ||                              | |          }t          ||dk              S rC   )r   rI   rJ   r5   rK   normal_r   )locscalerN   rE   rO   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   )
r0   r!   r%   r5   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   rQ   rF   )r%   r3   listr5   r   r   int)rU   rV   rN   rO   s       r   r   r      sf    |dUDM** w|sT]34000F63dbjAAAAr   Tar	   pArrayLike | Nonec                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   rS   zprobabilities do not sum to 1.)replacement)numelr5   aranger   is_sequence	ones_liker`   r   finforE   epsabssum
ValueErrormultinomialreshape)	rh   rN   replaceri   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#   )rR   rS   N)NN)NTN)rh   r	   ri   rj   )__doc__
__future__r   r=   mathr   r5    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   