
    /j                     t    d dl Z d dl mZmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
mZ dgZ G d de          ZdS )	    N)nanTensor)constraints)Distribution)broadcast_all)_Number_sizeUniformc            	       \    e Zd ZdZdZed             Zedefd            Zedefd            Z	edefd            Z
edefd            Z	 dd
eez  deez  ded	z  dd	f fdZd fd	Z ej        dd          d             Z ej                    fdedefdZd Zd Zd Zd Z xZS )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                 h    t          j        | j                  t          j        | j                  dS )N)lowhigh)r   	less_thanr   greater_thanr   selfs    `/home/longshao/multi-rider-rag/.venv/lib/python3.11/site-packages/torch/distributions/uniform.pyarg_constraintszUniform.arg_constraints!   s3     (33,TX66
 
 	
    returnc                 &    | j         | j        z   dz  S )N   r   r   r   s    r   meanzUniform.mean)   s    	DH$))r   c                      t           | j        z  S N)r   r   r   s    r   modezUniform.mode-   s    TYr   c                 &    | j         | j        z
  dz  S )NgLXz@r   r   s    r   stddevzUniform.stddev1   s    	DH$//r   c                 L    | j         | j        z
                      d          dz  S )Nr      )r   r   powr   s    r   variancezUniform.variance5   s$    	DH$))!,,r11r   Nr   r   validate_argsc                 6   t          ||          \  | _        | _        t          |t                    r)t          |t                    rt          j                    }n| j                                        }t                      	                    ||           d S )Nr$   )
r   r   r   
isinstancer   torchSizesizesuper__init__)r   r   r   r$   batch_shape	__class__s        r   r,   zUniform.__init__9   s     ,C66$)c7## 	*
4(A(A 	**,,KK(--//KMBBBBBr   c                 N   |                      t          |          }t          j        |          }| j                            |          |_        | j                            |          |_        t          t          |                              |d           | j	        |_	        |S )NFr&   )
_get_checked_instancer
   r(   r)   r   expandr   r+   r,   _validate_args)r   r-   	_instancenewr.   s       r   r1   zUniform.expandG   s    (()<<j--(//+..9##K00gs$$[$FFF!0
r   Fr   )is_discrete	event_dimc                 @    t          j        | j        | j                  S r   )r   intervalr   r   r   s    r   supportzUniform.supportP   s     #DHdi888r   sample_shapec                     |                      |          }t          j        || j        j        | j        j                  }| j        || j        | j        z
  z  z   S )N)dtypedevice)_extended_shaper(   randr   r<   r=   r   )r   r:   shaper?   s       r   rsamplezUniform.rsampleU   sN    $$\22z%tx~dhoNNNx$$)dh"6777r   c                    | j         r|                     |           | j                            |                              | j                  }| j                            |                              | j                  }t          j        |	                    |                    t          j        | j        | j        z
            z
  S r   )
r2   _validate_sampler   letype_asr   gtr(   logmul)r   valuelbubs       r   log_probzUniform.log_probZ   s     	)!!%(((X[[''11Y\\%  ((22y$$uyTX1E'F'FFFr   c                     | j         r|                     |           || j        z
  | j        | j        z
  z  }|                    dd          S )Nr      )minmax)r2   rC   r   r   clampr   rI   results      r   cdfzUniform.cdfa   sQ     	)!!%((($("ty48';<||q|)))r   c                 :    || j         | j        z
  z  | j        z   }|S r   r   rR   s      r   icdfzUniform.icdfg   s!    $)dh./$(:r   c                 D    t          j        | j        | j        z
            S r   )r(   rG   r   r   r   s    r   entropyzUniform.entropyk   s    yTX-...r   r   )__name__
__module____qualname____doc__has_rsamplepropertyr   r   r   r   r   r#   floatboolr,   r1   r   dependent_propertyr9   r(   r)   r	   rA   rL   rT   rV   rX   __classcell__)r.   s   @r   r
   r
      s
          K
 
 X
 *f * * * X* f    X 0 0 0 0 X0 2& 2 2 2 X2 &*	C Ce^C unC d{	C
 
C C C C C C      $[#CCC9 9 DC9 -7EJLL 8 8E 8V 8 8 8 8
G G G* * *  / / / / / / /r   )r(   r   r   torch.distributionsr    torch.distributions.distributionr   torch.distributions.utilsr   torch.typesr   r	   __all__r
    r   r   <module>ri      s             + + + + + + 9 9 9 9 9 9 3 3 3 3 3 3 & & & & & & & & +^/ ^/ ^/ ^/ ^/l ^/ ^/ ^/ ^/ ^/r   