
    2~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y)    N)Random)	GeneratorIterableOptionalSequenceTypeVarrandomr
   returnc                 6    | t         } | j                  dd      S )Ng        g      ?)
mod_randomuniformr	   s    a/var/www/peopleoo.sandbox-dev.co.uk/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icdfnormalcdf2uniform_sampleidxitems                 r   choices_distribution_uniquer0      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/   s               r   choices_distributionr9   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)Nr2   )r"   r7   r
   r   typingr   r   r   r   r   faker.generatorr   floatr   r   r   intr0   r9   r   r   r   <module>r>      s       C C 0$(6* $e $x 9UD$->#?  CL  $	{  V 	
 a[D  $	{  V 	
 a[r   