Ë
    D^(h�  ã                   óÀ   — d Z ddlZddlmZ g d¢Z ed«      dd„«       Z ed«      dd„«       Zd	„ Z ed
«      dd„«       Z	 ed«      dd„«       Z
 ed«      dd„«       Zy)zS
Utilities for generating random numbers, random sequences, and
random selections.
é    N)Úpy_random_state)Úpowerlaw_sequenceÚzipf_rvÚcumulative_distributionÚdiscrete_sequenceÚrandom_weighted_sampleÚweighted_choiceé   c                 ób   — t        | «      D �cg c]  }|j                  |dz
  «      ‘Œ c}S c c}w )zK
    Return sample sequence of length n from a power law distribution.
    é   )ÚrangeÚparetovariate)ÚnÚexponentÚseedÚis       ú\/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/networkx/utils/random_sequence.pyr   r      s+   € ô
 7<¸A³hÖ?°ˆD×Ñ˜x¨!™|Õ,Ò?Ð?ùÒ?s   Ž,r   c                 ó  — |dk  rt        d«      ‚| dk  rt        d«      ‚| dz
  }d|z  }	 d|j                  «       z
  }|j                  «       }t        ||d|z   z  z  «      }dd|z  z   |z  }||z  |dz
  z  |dz
  z  ||z  k  r	 |S Œ^)aw  Returns a random value chosen from the Zipf distribution.

    The return value is an integer drawn from the probability distribution

    .. math::

        p(x)=\frac{x^{-\alpha}}{\zeta(\alpha, x_{\min})},

    where $\zeta(\alpha, x_{\min})$ is the Hurwitz zeta function.

    Parameters
    ----------
    alpha : float
      Exponent value of the distribution
    xmin : int
      Minimum value
    seed : integer, random_state, or None (default)
        Indicator of random number generation state.
        See :ref:`Randomness<randomness>`.

    Returns
    -------
    x : int
      Random value from Zipf distribution

    Raises
    ------
    ValueError:
      If xmin < 1 or
      If alpha <= 1

    Notes
    -----
    The rejection algorithm generates random values for a the power-law
    distribution in uniformly bounded expected time dependent on
    parameters.  See [1]_ for details on its operation.

    Examples
    --------
    >>> nx.utils.zipf_rv(alpha=2, xmin=3, seed=42)
    8

    References
    ----------
    .. [1] Luc Devroye, Non-Uniform Random Variate Generation,
       Springer-Verlag, New York, 1986.
    r   zxmin < 1za <= 1.0g      ð?r
   )Ú
ValueErrorÚrandomÚint)	ÚalphaÚxminr   Úa1ÚbÚuÚvÚxÚts	            r   r   r       s´   € ðb ˆa‚xÜ˜Ó$Ð$Ø�‚zÜ˜Ó$Ð$Ø	�‰€BØ	ˆ2‰€AØ
Ø�$—+‘+“-ÑˆØ�K‰K‹MˆÜ��q˜c B™h˜KÑ'Ñ'Ó(ˆØ�C˜!‘G‰_ Ñ#ˆØˆq‰5�A˜‘GÑ  C¡Ñ(¨A°©EÒ1ØØ€Hð ó    c                 óŽ   — dg}t        | «      }t        t        | «      «      D ]  }|j                  ||   | |   |z  z   «       Œ! |S )zFReturns normalized cumulative distribution from discrete distribution.g        )Úsumr   ÚlenÚappend)ÚdistributionÚcdfÚpsumr   s       r   r   r   a   sQ   € ð ˆ%€CÜˆ|Ó€DÜ”3�|Ó$Ó%ò 4ˆØ�
‰
�3�q‘6˜L¨™O¨dÑ2Ñ2Õ3ð4à€Jr    é   c                 ó  — ddl }|�|}n#|�t        |«      }nt        j                  d«      ‚t	        | «      D �cg c]  }|j                  «       ‘Œ }}|D �cg c]  }|j                  ||«      dz
  ‘Œ }	}|	S c c}w c c}w )a#  
    Return sample sequence of length n from a given discrete distribution
    or discrete cumulative distribution.

    One of the following must be specified.

    distribution = histogram of values, will be normalized

    cdistribution = normalized discrete cumulative distribution

    r   Nz8discrete_sequence: distribution or cdistribution missingr   )Úbisectr   ÚnxÚNetworkXErrorr   r   Úbisect_left)
r   r%   Úcdistributionr   r*   r&   r   ÚinputseqÚsÚseqs
             r   r   r   k   s�   € ó àÐ Ø‰Ø	Ð	!Ü% lÓ3‰ä×ÑØFó
ð 	
ô
 (-¨Q£xÖ0 !�—‘•Ð0€HÐ0ð 4<Ö
<¨aˆ6×Ñ˜c 1Ó%¨Ó)Ð
<€CÐ
<Ø€Jùò	 1ùò =s   ºA7ÁA<c                 óÎ   — |t        | «      kD  rt        d«      ‚t        «       }t        |«      |k  r*|j                  t	        | |«      «       t        |«      |k  rŒ*t        |«      S )z€Returns k items without replacement from a weighted sample.

    The input is a dictionary of items with weights as values.
    zsample larger than population)r#   r   ÚsetÚaddr	   Úlist)ÚmappingÚkr   Úsamples       r   r   r   ‹   sX   € ð 	Œ3ˆw‹<ÒÜÐ8Ó9Ð9Ü‹U€FÜ
ˆf‹+˜Š/Ø�
‰
”? 7¨DÓ1Ô2ô ˆf‹+˜‹/ä�‹<Ðr    c                 ó¤   — |j                  «       t        | j                  «       «      z  }| j                  «       D ]  \  }}||z  }|dk  sŒ|c S  y)zuReturns a single element from a weighted sample.

    The input is a dictionary of items with weights as values.
    r   N)r   r"   ÚvaluesÚitems)r6   r   Úrndr7   Úws        r   r	   r	   ™   sN   € ð �+‰+‹-œ#˜gŸn™nÓ.Ó/Ñ
/€CØ—‘“ò ‰ˆˆ1Øˆq‰ˆØ�‹7ØŠHñr    )g       @N)r   N)NNN)N)Ú__doc__Únetworkxr+   Únetworkx.utilsr   Ú__all__r   r   r   r   r   r	   © r    r   ú<module>rC      sž   ðñó
 Ý *ò€ñ �Óò@ó ð@ñ �Óò=ó ð=ò@ñ �Óòó ðñ> �Óò
ó ð
ñ �Óò
ó ñ
r    