
    IЦi                     p    S SK Jr  S SKrS SKJr  S SKJr  S SKJr  S SKJ	r	  S SK
Jr  S/r " S	 S\5      rg)
    )NumberN)nan)constraints)Distribution)broadcast_all)_sizeUniformc                   Z  ^  \ rS rSrSr\R                  " SSS9\R                  " SSS9S.rSr\	S 5       r
\	S	 5       r\	S
 5       r\	S 5       rSU 4S jjrSU 4S jjr\R                   " SSS9S 5       r\R&                  " 5       4S\S\R*                  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).
Fr   )is_discrete	event_dim)lowhighTc                 :    U R                   U R                  -   S-  $ )N   r   r   selfs    Z/var/www/html/ai-image-ml/venv/lib/python3.13/site-packages/torch/distributions/uniform.pymeanUniform.mean&   s    		DHH$))    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.stddev.   s    		DHH$//r   c                 X    U R                   U R                  -
  R                  S5      S-  $ )Nr      )r   r   powr   s    r   varianceUniform.variance2   s%    		DHH$))!,r11r   c                   > [        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  U R                  (       aJ  [
        R                  " U R                  U R                  5      R                  5       (       d  [        S5      eg g )Nvalidate_argsz&Uniform is not defined when low>= high)r   r   r   
isinstancer   torchSizesizesuper__init___validate_argsltall
ValueError)r   r   r   r'   batch_shape	__class__s        r   r-   Uniform.__init__6   s    +C6$)c6""z$'?'?**,K((--/KBuxx$))'D'H'H'J'JEFF (Kr   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	   r)   r*   r   expandr   r,   r-   r.   )r   r2   	_instancenewr3   s       r   r7   Uniform.expandB   st    (()<jj-((//+.99##K0gs$[$F!00
r   c                 X    [         R                  " U R                  U R                  5      $ r   )r   intervalr   r   r   s    r   supportUniform.supportK   s    ##DHHdii88r   sample_shapereturnc                     U R                  U5      n[        R                  " X R                  R                  U R                  R
                  S9nU R                  X0R                  U R                  -
  -  -   $ )N)dtypedevice)_extended_shaper)   randr   rB   rC   r   )r   r?   shaperE   s       r   rsampleUniform.rsampleO   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   gtr)   logmul)r   valuelbubs       r   log_probUniform.log_probT   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.   rJ   r   r   clampr   rP   results      r   cdfUniform.cdf[   sJ    !!%((("tyy488';<||q|))r   c                 V    XR                   U R                  -
  -  U R                  -   nU$ r   r   rZ   s      r   icdfUniform.icdfa   s%    ))dhh./$((:r   c                 \    [         R                  " U R                  U R                  -
  5      $ r   )r)   rN   r   r   r   s    r   entropyUniform.entropye   s    yyTXX-..r   r   r   )__name__
__module____qualname____firstlineno____doc__r   	dependentarg_constraintshas_rsamplepropertyr   r   r   r#   r-   r7   dependent_propertyr=   r)   r*   r   TensorrG   rS   r\   r_   rb   __static_attributes____classcell__)r3   s   @r   r	   r	      s    " $$!D%%%1EO K* *   0 0 2 2
G ##C9 D9 -2JJL 8E 8U\\ 8
G*/ /r   )numbersr   r)   r   torch.distributionsr    torch.distributions.distributionr   torch.distributions.utilsr   torch.typesr   __all__r	    r   r   <module>rx      s1       + 9 3  +W/l W/r   