§
    Ÿ²Åja  ã                   óx   — d dl mZ d dlZd dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ dgZ G d	„ de¦  «        ZdS )
é    )ÚNumberN)Únan)Úconstraints)ÚDistribution)Úbroadcast_all)Ú_sizeÚUniformc                   ó\  ‡ — e Zd ZdZ ej        dd¬¦  «         ej        dd¬¦  «        dœZdZed„ ¦   «         Z	ed„ ¦   «         Z
ed	„ ¦   «         Zed
„ ¦   «         Zdˆ fd„	Zdˆ fd„	Z ej        dd¬¦  «        d„ ¦   «         Z ej        ¦   «         fdedej        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).
    Fr   )Úis_discreteÚ	event_dim)ÚlowÚhighTc                 ó&   — | j         | j        z   dz  S )Né   ©r   r   ©Úselfs    úLC:\Projects\Historical\venv\Lib\site-packages\torch/distributions/uniform.pyÚmeanzUniform.mean&   s   € à”	˜DœHÑ$¨Ñ)Ð)ó    c                 ó    — t           | j        z  S ©N)r   r   r   s    r   ÚmodezUniform.mode*   s   € å�T”Y‰Ðr   c                 ó&   — | j         | j        z
  dz  S )NgªLXèz¶@r   r   s    r   ÚstddevzUniform.stddev.   s   € à”	˜DœHÑ$¨Ñ/Ð/r   c                 óL   — | j         | j        z
                       d¦  «        dz  S )Nr   é   )r   r   Úpowr   s    r   ÚvariancezUniform.variance2   s$   € à”	˜DœHÑ$×)Ò)¨!Ñ,Ô,¨rÑ1Ð1r   Nc                 óÈ  •— t          ||¦  «        \  | _        | _        t          |t          ¦  «        r)t          |t          ¦  «        rt          j        ¦   «         }n| j                             ¦   «         }t          ¦   «          	                    ||¬¦  «         | j
        r@t          j        | j        | j        ¦  «                             ¦   «         st          d¦  «        ‚d S d S )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(   zUniform.__init__6   sÎ   ø€ Ý+¨C°Ñ6Ô6ÑˆŒ�$”)å�c�6Ñ"Ô"ð 	*¥z°$½Ñ'?Ô'?ð 	*Ýœ*™,œ,ˆKˆKàœ(Ÿ-š-™/œ/ˆKÝ‰Œ×Ò˜°MÐÑBÔBÐBàÔð 	G¥u¤x°´¸$¼)Ñ'DÔ'D×'HÒ'HÑ'JÔ'Jð 	GÝÐEÑFÔFÐFð	Gð 	Gð 	Gð 	Gr   c                 óN  •— |                       t          |¦  «        }t          j        |¦  «        }| j                             |¦  «        |_        | j                             |¦  «        |_        t          t          |¦  «                             |d¬¦  «         | j	        |_	        |S )NFr!   )
Ú_get_checked_instancer	   r$   r%   r   Úexpandr   r'   r(   r)   )r   r-   Ú	_instanceÚnewr.   s       €r   r1   zUniform.expandB   s†   ø€ Ø×(Ò(­°)Ñ<Ô<ˆÝ”j Ñ-Ô-ˆØ”(—/’/ +Ñ.Ô.ˆŒØ”9×#Ò# KÑ0Ô0ˆŒÝ�g�sÑÔ×$Ò$ [ÀÐ$ÑFÔFÐFØ!Ô0ˆÔØˆ
r   c                 ó@   — t          j        | j        | j        ¦  «        S r   )r   Úintervalr   r   r   s    r   ÚsupportzUniform.supportK   s   € åÔ# D¤H¨d¬iÑ8Ô8Ð8r   Úsample_shapeÚreturnc                 ó¶   — |                       |¦  «        }t          j        || j        j        | j        j        ¬¦  «        }| j        || j        | j        z
  z  z   S )N)ÚdtypeÚdevice)Ú_extended_shaper$   Úrandr   r:   r;   r   )r   r7   Úshaper=   s       r   ÚrsamplezUniform.rsampleO   sN   € Ø×$Ò$ \Ñ2Ô2ˆÝŒz˜% t¤x¤~¸d¼h¼oÐNÑNÔNˆØŒx˜$ $¤)¨d¬hÑ"6Ñ7Ñ7Ð7r   c                 ó”  — | j         r|                      |¦  «         | j                             |¦  «                             | j        ¦  «        }| j                             |¦  «                             | j        ¦  «        }t          j        | 	                    |¦  «        ¦  «        t          j        | j        | j        z
  ¦  «        z
  S r   )
r)   Ú_validate_sampler   ÚleÚtype_asr   Úgtr$   ÚlogÚmul)r   ÚvalueÚlbÚubs       r   Úlog_probzUniform.log_probT   s™   € ØÔð 	)Ø×!Ò! %Ñ(Ô(Ð(ØŒX�[Š[˜ÑÔ×'Ò'¨¬Ñ1Ô1ˆØŒY�\Š\˜%Ñ Ô ×(Ò(¨¬Ñ2Ô2ˆÝŒy˜Ÿš ™œÑ$Ô$¥u¤y°´¸T¼XÑ1EÑ'FÔ'FÑFÐFr   c                 óœ   — | j         r|                      |¦  «         || j        z
  | j        | j        z
  z  }|                     dd¬¦  «        S )Nr   é   )ÚminÚmax)r)   rA   r   r   Úclamp©r   rG   Úresults      r   ÚcdfzUniform.cdf[   sQ   € ØÔð 	)Ø×!Ò! %Ñ(Ô(Ð(Ø˜$œ(Ñ" t¤y°4´8Ñ';Ñ<ˆØ�|Š|  qˆ|Ñ)Ô)Ð)r   c                 ó:   — || j         | j        z
  z  | j        z   }|S r   r   rP   s      r   ÚicdfzUniform.icdfa   s!   € Ø˜$œ) d¤hÑ.Ñ/°$´(Ñ:ˆØˆr   c                 óD   — t          j        | j        | j        z
  ¦  «        S r   )r$   rE   r   r   r   s    r   ÚentropyzUniform.entropye   s   € ÝŒy˜œ T¤XÑ-Ñ.Ô.Ð.r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Ú	dependentÚarg_constraintsÚhas_rsampleÚpropertyr   r   r   r   r(   r1   Údependent_propertyr6   r$   r%   r   ÚTensorr?   rJ   rR   rT   rV   Ú__classcell__)r.   s   @r   r	   r	      s¸  ø€ € € € € ðð ð" %ˆ{Ô$°À!ÐDÑDÔDØ%�Ô%°%À1ÐEÑEÔEðð €Oð €Kàð*ð *ñ „Xð*ð ðð ñ „Xðð ð0ð 0ñ „Xð0ð ð2ð 2ñ „Xð2ð
Gð 
Gð 
Gð 
Gð 
Gð 
Gðð ð ð ð ð ð $€[Ô#°ÀÐCÑCÔCð9ð 9ñ DÔCð9ð -7¨E¬J©L¬Lð 8ð 8 Eð 8¸U¼\ð 8ð 8ð 8ð 8ð
Gð Gð Gð*ð *ð *ðð ð ð/ð /ð /ð /ð /ð /ð /r   )Únumbersr   r$   r   Útorch.distributionsr   Ú torch.distributions.distributionr   Útorch.distributions.utilsr   Útorch.typesr   Ú__all__r	   © r   r   ú<module>ri      sÁ   ðà Ð Ð Ð Ð Ð à €€€Ø Ð Ð Ð Ð Ð Ø +Ð +Ð +Ð +Ð +Ð +Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø 3Ð 3Ð 3Ð 3Ð 3Ð 3Ø Ð Ð Ð Ð Ð ð ˆ+€ðW/ð W/ð W/ð W/ð W/ˆlñ W/ô W/ð W/ð W/ð W/r   