§
    ŠŠtj  ã                   ó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    úY/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/torch/distributions/uniform.pyÚarg_constraintszUniform.arg_constraints!   s3   € õ Ô(¨¬Ñ3Ô3ÝÔ,¨T¬XÑ6Ô6ð
ð 
ð 	
ó    Úreturnc                 ó&   — | j         | j        z   dz  S )Né   ©r   r   r   s    r   ÚmeanzUniform.mean)   s   € à”	˜DœHÑ$¨Ñ)Ð)r   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.stddev1   s   € à”	˜DœHÑ$¨Ñ/Ð/r   c                 óL   — | j         | j        z
                       d¦  «        dz  S )Nr   é   )r   r   Úpowr   s    r   ÚvariancezUniform.variance5   s$   € à”	˜DœHÑ$×)Ò)¨!Ñ,Ô,¨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ÑˆŒ�$”)å�c�7Ñ#Ô#ð 	*­
°4½Ñ(AÔ(Að 	*Ýœ*™,œ,ˆKˆKàœ(Ÿ-š-™/œ/ˆ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ˆŒÝ�g�sÑÔ×$Ò$ [ÀÐ$Ñ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   € õ Ô# D¤H¨d¬iÑ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˜% 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   )
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˜Ÿš ™œÑ$Ô$¥u¤y°´¸T¼XÑ1EÑ'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   € ØÔð 	)Ø×!Ò! %Ñ(Ô(Ð(Ø˜$œ(Ñ" t¤y°4´8Ñ';Ñ<ˆØ�|Š|  qˆ|Ñ)Ô)Ð)r   c                 ó:   — || j         | j        z
  z  | j        z   }|S r   r   rR   s      r   ÚicdfzUniform.icdfg   s!   € Ø˜$œ) d¤hÑ.Ñ/°$´(Ñ:ˆØˆr   c                 óD   — t          j        | j        | j        z
  ¦  «        S r   )r(   rG   r   r   r   s    r   ÚentropyzUniform.entropyk   s   € ÝŒy˜œ T¤XÑ-Ñ.Ô.Ð.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ð �u‰nðCð ˜d‘{ð	Cð
 
ðCð Cð Cð Cð Cð Cðð ð ð ð ð ð $€[Ô#°ÀÐCÑCÔCð9ð 9ñ DÔCð9ð -7¨E¬J©L¬Lð 8ð 8 Eð 8¸Vð 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   