
    9i!                     |    S SK JrJr  S SKrS SKJrJr  S SKJr  S SKJ	r	  S SK
Jr  S SKJrJr  S/r " S	 S\	5      rg)
    )OptionalUnionN)nanTensor)constraints)Distribution)broadcast_all)_Number_sizeUniformc            	       `  ^  \ rS rSrSrSr\S 5       r\S\4S j5       r	\S\4S j5       r
\S\4S j5       r\S\4S	 j5       r SS\\\4   S\\\4   S\\   SS
4U 4S jjjrSU 4S jjr\R(                  " SSS9S 5       r\R.                  " 5       4S\S\4S jjrS rS rS rS rSrU =r$ )r      a  
Generates uniformly distributed random samples from the half-open interval
``[low, high)``.

Example::

    >>> m = Uniform(torch.tensor([0.0]), torch.tensor([5.0]))
    >>> m.sample()  # uniformly distributed in the range [0.0, 5.0)
    >>> # xdoctest: +SKIP
    tensor([ 2.3418])

Args:
    low (float or Tensor): lower range (inclusive).
    high (float or Tensor): upper range (exclusive).
Tc                     [         R                  " U R                  5      [         R                  " U R                  5      S.$ )N)lowhigh)r   	less_thanr   greater_thanr   selfs    [/var/www/html/land-doc-ocr/venv/lib/python3.13/site-packages/torch/distributions/uniform.pyarg_constraintsUniform.arg_constraints"   s2     ((3,,TXX6
 	
    returnc                 :    U R                   U R                  -   S-  $ )N   r   r   r   s    r   meanUniform.mean*   s    		DHH$))r   c                 (    [         U R                  -  $ N)r   r   r   s    r   modeUniform.mode.   s    TYYr   c                 :    U R                   U R                  -
  S-  $ )NgLXz@r   r   s    r   stddevUniform.stddev2   s    		DHH$//r   c                 X    U R                   U R                  -
  R                  S5      S-  $ )Nr      )r   r   powr   s    r   varianceUniform.variance6   s%    		DHH$))!,r11r   Nr   r   validate_argsc                   > [        X5      u  U l        U l        [        U[        5      (       a+  [        U[        5      (       a  [
        R                  " 5       nOU R                  R                  5       n[        TU ]%  XCS9  g )Nr,   )
r	   r   r   
isinstancer
   torchSizesizesuper__init__)r   r   r   r,   batch_shape	__class__s        r   r4   Uniform.__init__:   s[     ,C6$)c7##
4(A(A**,K((--/KBr   c                 &  > U R                  [        U5      n[        R                  " U5      nU R                  R                  U5      Ul        U R                  R                  U5      Ul        [        [        U]#  USS9  U R                  Ul	        U$ )NFr.   )
_get_checked_instancer   r0   r1   r   expandr   r3   r4   _validate_args)r   r5   	_instancenewr6   s       r   r:   Uniform.expandH   st    (()<jj-((//+.99##K0gs$[$F!00
r   Fr   )is_discrete	event_dimc                 X    [         R                  " U R                  U R                  5      $ r!   )r   intervalr   r   r   s    r   supportUniform.supportQ   s    ##DHHdii88r   sample_shapec                     U R                  U5      n[        R                  " X R                  R                  U R                  R
                  S9nU R                  X0R                  U R                  -
  -  -   $ )N)dtypedevice)_extended_shaper0   randr   rG   rH   r   )r   rE   shaperJ   s       r   rsampleUniform.rsampleU   sQ    $$\2zz%xx~~dhhooNxx$))dhh"6777r   c                    U R                   (       a  U R                  U5        U R                  R                  U5      R	                  U R                  5      nU R
                  R                  U5      R	                  U R                  5      n[        R                  " UR                  U5      5      [        R                  " U R
                  U R                  -
  5      -
  $ r!   )
r;   _validate_sampler   letype_asr   gtr0   logmul)r   valuelbubs       r   log_probUniform.log_probZ   s    !!%(XX[[''1YY\\% ((2yy$uyyTXX1E'FFFr   c                     U R                   (       a  U R                  U5        XR                  -
  U R                  U R                  -
  -  nUR	                  SSS9$ )Nr      )minmax)r;   rO   r   r   clampr   rU   results      r   cdfUniform.cdfa   sJ    !!%((("tyy488';<||q|))r   c                 V    XR                   U R                  -
  -  U R                  -   nU$ r!   r   r_   s      r   icdfUniform.icdfg   s%    ))dhh./$((:r   c                 \    [         R                  " U R                  U R                  -
  5      $ r!   )r0   rS   r   r   r   s    r   entropyUniform.entropyk   s    yyTXX-..r   r   r!   ) __name__
__module____qualname____firstlineno____doc__has_rsamplepropertyr   r   r   r"   r%   r*   r   floatr   boolr4   r:   r   dependent_propertyrC   r0   r1   r   rL   rX   ra   rd   rg   __static_attributes____classcell__)r6   s   @r   r   r      s=     K
 
 *f * * f   0 0 0 2& 2 2 )-	C65=!C FEM"C  ~	C
 
C C ##C9 D9 -2JJL 8E 8V 8
G*/ /r   )typingr   r   r0   r   r   torch.distributionsr    torch.distributions.distributionr   torch.distributions.utilsr	   torch.typesr
   r   __all__r    r   r   <module>r|      s1    "   + 9 3 & +]/l ]/r   