Ë
    f^(h  ã                   ól   — 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y)	é    N)ÚnanÚTensor)Úconstraints)ÚDistribution)Úbroadcast_all)Ú_NumberÚ_sizeÚUniformc                   ó\  ‡ — e Zd ZdZ ej
                  dd¬«       ej
                  dd¬«      dœZ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ˆ 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).
    Fr   )Úis_discreteÚ	event_dim)ÚlowÚhighTÚreturnc                 ó:   — | j                   | j                  z   dz  S )Né   ©r   r   ©Úselfs    úY/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torch/distributions/uniform.pyÚmeanzUniform.mean%   s   € à—	‘	˜DŸH™HÑ$¨Ñ)Ð)ó    c                 ó(   — t         | j                  z  S ©N)r   r   r   s    r   ÚmodezUniform.mode)   s   € ä�T—Y‘Y‰Ðr   c                 ó:   — | j                   | j                  z
  dz  S )NgªLXèz¶@r   r   s    r   ÚstddevzUniform.stddev-   s   € à—	‘	˜DŸH™HÑ$¨Ñ/Ð/r   c                 óX   — | j                   | j                  z
  j                  d«      dz  S )Nr   é   )r   r   Úpowr   s    r   ÚvariancezUniform.variance1   s%   € à—	‘	˜DŸH™HÑ$×)Ñ)¨!Ó,¨rÑ1Ð1r   c                 ó˜  •— t        ||«      \  | _        | _        t        |t        «      r%t        |t        «      rt        j                  «       }n| j                  j                  «       }t        ‰| �%  ||¬«       | j                  rDt        j                  | j                  | j                  «      j                  «       st        d«      ‚y y )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__5   s“   ø€ Ü+¨C°Ó6ÑˆŒ�$”)ä�cœ7Ô#¬
°4¼Ô(AÜŸ*™*›,‰KàŸ(™(Ÿ-™-›/ˆKÜ‰Ñ˜°MÐÔBà×Ò¤u§x¡x°·±¸$¿)¹)Ó'D×'HÑ'HÔ'JÜÐEÓFÐFð (KÐr   c                 ó*  •— | j                  t        |«      }t        j                  |«      }| j                  j                  |«      |_        | j                  j                  |«      |_        t        t        |�#  |d¬«       | j                  |_	        |S )NFr#   )
Ú_get_checked_instancer
   r&   r'   r   Úexpandr   r)   r*   r+   )r   r/   Ú	_instanceÚnewr0   s       €r   r3   zUniform.expandA   st   ø€ Ø×(Ñ(¬°)Ó<ˆÜ—j‘j Ó-ˆØ—(‘(—/‘/ +Ó.ˆŒØ—9‘9×#Ñ# KÓ0ˆŒÜŒg�sÑ$ [ÀÐ$ÔFØ!×0Ñ0ˆÔØˆ
r   c                 óV   — t        j                  | j                  | j                  «      S r   )r   Úintervalr   r   r   s    r   ÚsupportzUniform.supportJ   s   € ä×#Ñ# D§H¡H¨d¯i©iÓ8Ð8r   Úsample_shapec                 óö   — | j                  |«      }t        j                  || j                  j                  | j                  j
                  ¬«      }| j                  || j                  | j                  z
  z  z   S )N)ÚdtypeÚdevice)Ú_extended_shaper&   Úrandr   r;   r<   r   )r   r9   Úshaper>   s       r   ÚrsamplezUniform.rsampleN   sU   € Ø×$Ñ$ \Ó2ˆÜ�z‰z˜% t§x¡x§~¡~¸d¿h¹h¿o¹oÔNˆØ�x‰x˜$ $§)¡)¨d¯h©hÑ"6Ñ7Ñ7Ð7r   c                 ó®  — | j                   r| j                  |«       | j                  j                  |«      j	                  | j                  «      }| j
                  j                  |«      j	                  | j                  «      }t        j                  |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_probS   s�   € Ø×ÒØ×!Ñ! %Ô(Ø�X‰X�[‰[˜Ó×'Ñ'¨¯©Ó1ˆØ�Y‰Y�\‰\˜%Ó ×(Ñ(¨¯©Ó2ˆÜ�y‰y˜Ÿ™ ›Ó$¤u§y¡y°·±¸T¿X¹XÑ1EÓ'FÑFÐFr   c                 ó´   — | j                   r| j                  |«       || j                  z
  | j                  | j                  z
  z  }|j	                  dd¬«      S )Nr   é   )ÚminÚmax)r+   rB   r   r   Úclamp©r   rH   Úresults      r   ÚcdfzUniform.cdfZ   sL   € Ø×ÒØ×!Ñ! %Ô(Ø˜$Ÿ(™(Ñ" t§y¡y°4·8±8Ñ';Ñ<ˆØ�|‰|  qˆ|Ó)Ð)r   c                 óX   — || j                   | j                  z
  z  | j                  z   }|S r   r   rQ   s      r   ÚicdfzUniform.icdf`   s'   € Ø˜$Ÿ)™) d§h¡hÑ.Ñ/°$·(±(Ñ:ˆØˆr   c                 óZ   — t        j                  | j                  | j                  z
  «      S r   )r&   rF   r   r   r   s    r   ÚentropyzUniform.entropyd   s   € Ü�y‰y˜Ÿ™ T§X¡XÑ-Ó.Ð.r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Ú	dependentÚarg_constraintsÚhas_rsampleÚpropertyr   r   r   r   r!   r*   r3   Údependent_propertyr8   r&   r'   r	   r@   rK   rS   rU   rW   Ú__classcell__)r0   s   @r   r
   r
      s
  ø„ ñð$ %ˆ{×$Ñ$°À!ÔDØ%�×%Ñ%°%À1ÔEñ€Oð €Kàð*�fò *ó ð*ð ð�fò ó ðð ð0˜ò 0ó ð0ð ð2˜&ò 2ó ð2õ
Gõð $€[×#Ñ#°ÀÔCñ9ó Dð9ð -7¨E¯J©J«Lñ 8 Eð 8¸Vó 8ò
Gò*òö/r   )r&   r   r   Útorch.distributionsr   Ú torch.distributions.distributionr   Útorch.distributions.utilsr   Útorch.typesr   r	   Ú__all__r
   © r   r   ú<module>rh      s.   ðã ß Ý +Ý 9Ý 3ß &ð ˆ+€ôX/ˆlõ X/r   