
    gi	                     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 )Nr   g      ?)
mod_randomuniformr	   s    p/var/www/development/aibuddy-work/election-extract/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probabilities_cdfcdf2uniform_sampleidxitemr#   s                @r   choices_distribution_uniquer7      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.   r2   r3   r1   r4   r5   r6   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   intr7   r@   r   r   r   <module>rE      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   