
    8 f	                     h   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dS )    N)Random)	GeneratorIterableOptionalSequenceTypeVarrandomr
   returnc                 @    | t           } |                     dd          S )Ng        g      ?)
mod_randomuniformr	   s    N/var/www/equiseq/venv/lib/python3.11/site-packages/faker/utils/distribution.pyrandom_sampler   
   s     ~>>#s###    itc              #   *   K   d}| D ]}||z  }|V  d S )Nr    )r   totalxs      r   cumsumr      s8      E  
 r   T   aplengthc                 @   |t           }|J t          |           t          |          k    sJ t          |           |k    s
J d            g }t          |           }t          |          }t          |          D ]}t	          t          |                    }|d         fd|D             }	t          |          }
t          j        |	|
          }||         }|	                    |           |
                    |           |
                    |           |S )NzCYou can't request more unique samples than elements in the dataset.c                     g | ]}|z  S r   r   .0inormals     r   
<listcomp>z/choices_distribution_unique.<locals>.<listcomp>/       (((qF
(((r   r	   )r   lenlistrangetupler   r   bisectbisect_rightappendpop)r   r   r
   r   choicesitemsprobabilitiesr"   cdfcdf2uniform_sampleidxitemr#   s                @r   choices_distribution_uniquer6      s#    ~===q66SVVq66VbGGGEGGM6]] 	 	F=))**R((((C(((&f555!$77Szt#		#Nr   c                 F   |t           }|"t          |           t          |          k    sJ t          |d          r6|dk    r||                    |           gS |                    | ||          S g }|"t          j        dt          |                     }t          t          |                    }|d         fd|D             }t          |          D ]D}t          |          }t          j        ||          }	| |	         }
|                    |
           E|S )Nr.   r   )weightskr   c                     g | ]}|z  S r   r   r    s     r   r$   z(choices_distribution.<locals>.<listcomp>R   r%   r   r	   )r   r&   hasattrchoicer.   	itertoolsrepeatr'   r   r(   r   r*   r+   r,   )r   r   r
   r   r.   r1   r2   r"   r3   r4   r5   r#   s              @r   choices_distributionr?   9   s,    ~}1vvQvy!! Q;;19MM!$$%%>>!Q&>9999 CFF++A6!99ooR((((C(((v 	! 	!A*&999N%dN;;CS6DNN4    r   )N)Nr   )r*   r=   r
   r   typingr   r   r   r   r   faker.generatorr   floatr   r   r   intr6   r?   r   r   r   <module>rD      s              C C C C C C C C C C C C C C 0 0 0 0 0 0$ $(6* $e $ $ $ $x 9UD$->#?     GCLL  $	 {  V 	
 a[   D  $	 {  V 	
 a[     r   