
    ei	                        d dl Z d dlZd dlmZ d dlmZmZmZmZm	Z	 d dl
mZ ddee   defdZdee   deeddf   fd	Z e	d
      Z	 	 ddee   deee      dee   dedee   f
dZ	 	 ddee   deee      dee   dedee   f
dZy)    N)Random)	GeneratorIterableOptionalSequenceTypeVarrandomr
   returnc                 6    | t         } | j                  dd      S )Nr   g      ?)
mod_randomuniformr	   s    Z/var/www/html/glpi_dashboard/venv/lib/python3.12/site-packages/faker/utils/distribution.pyrandom_sampler   
   s    ~>>!S!!    itc              #   0   K   d}| D ]  }||z  }|  y w)Nr    )r   totalxs      r   cumsumr      s(     E 
s   Taplengthc                    |t         }|J t        |       t        |      k(  sJ t        |       |k\  sJ d       g }t        |       }t        |      }t        |      D ]  }t	        t        |            }|d   }	|D 
cg c]  }
|
|	z  	 }}
t        |      }t        j                  ||      }||   }|j                  |       |j                  |       |j                  |        |S c c}
w )NzCYou can't request more unique samples than elements in the dataset.r	   )r   lenlistrangetupler   r   bisectbisect_rightappendpop)r   r   r
   r   choicesitemsprobabilities_cdfnormalicdf2uniform_sampleidxitems                  r   choices_distribution_uniquer1      s     ~==q6SVq6VbbbGGEGM6] 	F=)*R$'(qF
((&f5!!$7Szt#		#	 N )s   >C*c                    |t         }|t        |       t        |      k(  sJ t        |d      r-|dk(  r||j                  |       gS |j	                  | ||      S g }|t        j                  dt        |             }t        t        |            }|d   }|D cg c]  }||z  	 }}t        |      D ]:  }	t        |      }
t        j                  ||
      }| |   }|j                  |       < |S c c}w )Nr&      )weightskr   r	   )r   r   hasattrchoicer&   	itertoolsrepeatr   r   r    r   r"   r#   r$   )r   r   r
   r   r&   r*   r+   r,   r-   r)   r.   r/   r0   s                r   choices_distributionr:   9   s    ~}1vQvy!Q;19MM!$%%>>!Q&>999  CF+A6!9oR$'(qF
((v 	!A*&9N%%dN;CS6DNN4 		!
  )s   C5)N)Nr3   )r"   r8   r
   r   typingr   r   r   r   r   faker.generatorr   floatr   r   r   intr1   r:   r   r   r   <module>r?      s       C C 0"(6* "e "x 9UD$->#?  CL  $	{  V 	
 a[D  $	{  V 	
 a[r   