a
    c                     @   sF  e e d ddZddlZedej Zd7e e e e ddd	ZddlmZ	 d
d e
ddD Ze	jedd eD ddd e	jedd eD ddd e	jedd eD ddd e	jedd eD ddd e	  e	d e	   e	  e	  d8e e e e dddZdd e
ddD Ze	jedd eD ddd e	jed d eD ddd e	jed!d eD ddd e	jed"d eD ddd e	jd#d$ e	d% e	  e	   e	  d9e e e e e d'd(d)ZddlZe ed*d+d,Zee ed-d.d/Zdd0lmZ e eedd1d2d3Zd4d5 Zed6krBe  dS ):xreturnc                 C   s    | dk rdS | dk r| S dS dS )z>Returns the probability that a uniform random variable is <= x       N r   r   r   F/home/cheung/ML/DS-from-scratch/07-hypo-testing/scratch/probability.pyuniform_cdf   s    r	   r   N   r   )r   musigmar   c                 C   s(   t | | d  d |d  t|  S )Nr
   )mathexpSQRT_TWO_PIr   r   r   r   r   r   
normal_pdf
   s    r   c                 C   s   g | ]}|d  qS       $@r   .0r   r   r   r   
<listcomp>       r   i2   c                 C   s   g | ]}t |d dqS r   r   r   r   r   r   r   r      r   -zmu=0,sigma=1)Zlabelc                 C   s   g | ]}t |d dqS r
   r   r   r   r   r   r   r      r   z--zmu=0,sigma=2c                 C   s   g | ]}t |d dqS       ?r   r   r   r   r   r   r      r   :zmu=0,sigma=0.5c                 C   s   g | ]}t |d dqS )r   r   r   r   r   r   r      r   z-.zmu=-1,sigma=1zVarious Normal pdfsc                 C   s$   dt | | t d |  d S )Nr   r
   )r   erfsqrtr   r   r   r   
normal_cdf   s    r%   c                 C   s   g | ]}|d  qS r   r   r   r   r   r   r       r   c                 C   s   g | ]}t |d dqS r   r%   r   r   r   r   r   !   r   c                 C   s   g | ]}t |d dqS r   r&   r   r   r   r   r   "   r   c                 C   s   g | ]}t |d dqS r   r&   r   r   r   r   r   #   r   c                 C   s   g | ]}t |d dqS r!   r&   r   r   r   r   r   $   r      )ZloczVarious Normal cdfsh㈵>)pr   r   	tolerancer   c                 C   sd   |dks|dkr$||t | |d  S d}d}|| |kr`|| d }t|}|| k rZ|}q,|}q,|S )z,Find approximate inverse using binary searchr   r   )r*   g      $r   r
   )inverse_normal_cdfr%   )r)   r   r   r*   Zlow_zZhi_zZmid_zZmid_pr   r   r   r+   .   s    r+   )r)   r   c                 C   s   t   | k rdS dS )z7Returns 1 with probability p and 0 with probability 1-pr   r   )randomr)   r   r   r   bernoulli_trialG   s    r.   )nr)   r   c                    s   t  fddt| D S )z(Returns the sum of n bernoulli(p) trialsc                 3   s   | ]}t  V  qd S N)r.   r   _r-   r   r   	<genexpr>M   r   zbinomial.<locals>.<genexpr>)sumranger/   r)   r   r-   r   binomialK   s    r7   )Counter)r)   r/   
num_pointsr   c                    s   fddt D }t|}tjdd | D fdd| D ddd   t d  t t|t	|d } fd	d|D }t
|| td
 dS )z<Picks points from a Binomial(n, p) and plots their histogramc                    s   g | ]}t  qS r   )r7   r1   r6   r   r   r   S   r   z&binomial_histogram.<locals>.<listcomp>c                 S   s   g | ]}|d  qS )g?r   r   r   r   r   r   W   r   c                    s   g | ]}|  qS r   r   )r   v)r9   r   r   r   X   r   g?z0.75)Zcolorr   c                    s,   g | ]$}t |d   t |d    qS )r   r&   )r   i)r   r   r   r   r   a   s   z.Binomial Distribution vs. Normal ApproximationN)r5   r8   pltZbarkeysvaluesr   r$   minmaxplottitle)r)   r/   r9   dataZ	histogramxsZysr   )r   r/   r9   r)   r   r   binomial_histogramQ   s    rE   c            	         s   dd l } dd lG dd d| j  d fdd}d}d}d}d tdD ]Z}| }| }| jkrv|d7 }| jkr| jkr|d7 }| jks| jkrT|d7 }qTtd	||  td
||  d||   k rdk sn J d||   k rdk sn J ttddd}d S )Nr   c                   @   s   e Zd ZdZdZdS )zmain.<locals>.Kidr   r   N)__name__
__module____qualname__BOYGIRLr   r   r   r   Kidl   s   rK   )r   c                      s     j jgS r0   )choicerI   rJ   r   rK   r,   r   r   
random_kidp   s    zmain.<locals>.random_kidi'  r   zP(both | older):zP(both | either): gQ?gp=
ף?g333333?gffffff?r   c                 S   s    d|   krdk rn ndS dS )Nr   r   r   r   r   r   r   uniform_pdf   s    zmain.<locals>.uniform_pdf)enumr,   ZEnumseedr5   rJ   printfloat)	rP   rN   Z
both_girlsZ
older_girlZeither_girlr2   ZyoungerZolderrO   r   rM   r   maing   s*    


"rT   __main__)r   r   )r   r   )r   r   r(   )rS   r	   r   r$   pir   r   Zmatplotlib.pyplotZpyplotr<   r5   rD   rA   ZlegendrB   ZgcaclearcloseZclfr%   r+   r,   intr.   r7   Zcollectionsr8   rE   rT   rF   r   r   r   r   <module>   sP   

   '