o
    %g                     @   sB   d dl mZmZ d dlZd dlZd dlmZmZ G dd dZ	dS )    )assert_assert_array_equalN)	GeneratorMT19937c                   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'S )(TestRegressionc                 C   s   t td| _d S )Nl   (vn4Ti )r   r   mt19937self r
   t/root/parts/websockify/install/lib/python3.10/site-packages/numpy/random/tests/test_generator_mt19937_regressions.pysetup_method	   s   zTestRegression.setup_methodc                 C   sN   t dddD ]}| j|dd}tt |t j ko"t |t jk qd S )Ng      g      @      2   )nplinspacer   vonmisesr   allpi)r	   murr
   r
   r   test_vonmises_range   s   (z"TestRegression.test_vonmises_rangec              	   C   s`   t t| jjddddddk  t t| jjddddddk d}t | jj| dk d S )	N         
   size   r   ) r   r   )r   r   r   r   hypergeometric)r	   argsr
   r
   r   test_hypergeometric_range   s   ""z(TestRegression.test_hypergeometric_rangec                 C   st   d}| j jd|d}t|dk| }d|dd}t|dk| t|d	k| }d|dd
}t|dk | d S )N  g?r   r   zFrequency was fz, should be > 0.45g?   z, should be < 0.23gq=
ףp?)r   	logseriesr   sumr   )r	   Nrvsnfreqmsgr
   r
   r   test_logseries_convergence   s   z)TestRegression.test_logseries_convergencec                 C   s   g dg dg dg dfD ]1}t td}tj|td}|| tj|d |d |d	 |d
 gtd}ttj|td| qd S )N)r   r%   r   N)r   r   r%   r%   r   r   N)r   r.   r/   N)r-   r%   r   Ni90  dtyper%   r   r   r   )r   r   r   arrayobjectshuffler   )r	   tr   shuffledexpectedr
   r
   r   test_shuffle_mixed_dimension+   s   
&z+TestRegression.test_shuffle_mixed_dimensionc                 C   sX   t g d}tdD ]}tt|}ttd}t|jddt dd d| qd S )N)
r      r   r   r   r   r   r9   r   r   r   i  r   g      $@)r   p)r   r2   ranger   r   r   choiceones)r	   resir   mr
   r
   r   test_call_within_randomstate7   s   "z+TestRegression.test_call_within_randomstatec                 C   sX   | j jdgdggdd | j jdgdggtdd | j jdgdggtdd d S )Nr   r   r   )r   multivariate_normalr   int_int64r   r
   r
   r   #test_multivariate_normal_size_types@   s   "z2TestRegression.test_multivariate_normal_size_typesc                 C   s.   | j jdddd}ttt| d d S )Ng-C6?d   r   zNans in mt19937.beta)r   betar   r   anyisnan)r	   xr
   r
   r   test_beta_small_parametersH   s   z)TestRegression.test_beta_small_parametersc                 C   s   | j dd d S )Ngn5gWw'&l7)r   rG   r   r
   r
   r   test_beta_very_small_parametersN   s   z.TestRegression.test_beta_very_small_parametersc                 C   s>   t dj}| jj|d |d dd}t t |rJ d S )Ng      ?    (   r   r   )r   finfotinyr   rG   rH   rI   )r	   rP   rJ   r
   r
   r   'test_beta_ridiculously_small_parametersR   s   z6TestRegression.test_beta_ridiculously_small_parametersc                 C   sX   d}d}d}| j j|||d}t|dk}d}d| |  k r'd| k s*J  J d S )Ng{Gzd?i@B r   r   gSis@gffffff?g?)r   rG   r   count_nonzero)r	   abnrJ   nzerosexpected_freqr
   r
   r   !test_beta_expected_zero_frequencyY   s   (z0TestRegression.test_beta_expected_zero_frequencyc              	   C   s   g d}g d}t jt jt jfD ]:}t j||dt| }| jj||d}t||v  t	
t | jj||d d W d    n1 sEw   Y  qd S )N)r   r%   r   )r   r   r%   r0   )r:   g?)r   float16float32float64r2   r'   r   r<   r   pytestraises
ValueError)r	   rS   countsdtprobscr
   r
   r   "test_choice_sum_of_probs_tolerancep   s   z1TestRegression.test_choice_sum_of_probs_tolerancec                 C   s<   t ddg}tdD ]}| j| qdd l}|  d S )NrS     aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarF   r   )r   r2   r;   r   r4   gccollectr	   rS   _re   r
   r
   r   1test_shuffle_of_array_of_different_length_strings}   s
   z@TestRegression.test_shuffle_of_array_of_different_length_stringsc                 C   sL   t jt dt dgtd}tdD ]}| j| qdd l}|  d S )Nr   r   r0   r#   r   )	r   r2   aranger3   r;   r   r4   re   rf   rg   r
   r
   r    test_shuffle_of_array_of_objects   s
   z/TestRegression.test_shuffle_of_array_of_objectsc                 C   s   G dd dt j}ttd}t d|}||}t|t g d t|t d| G dd d}ttd}| }||}t|t g d t|	 t d	 d S )
Nc                   @   s   e Zd ZdS )z3TestRegression.test_permutation_subclass.<locals>.NN)__name__
__module____qualname__r
   r
   r
   r   r(      s    r(   r   r   )r%   r   r   c                   @   s    e Zd ZedZdddZdS )z3TestRegression.test_permutation_subclass.<locals>.Mr   Nc                 S   s   | j S )N)rS   )r	   r1   copyr
   r
   r   	__array__   s   z=TestRegression.test_permutation_subclass.<locals>.M.__array__)NN)rl   rm   rn   r   rj   rS   rp   r
   r
   r
   r   M   s    
rq   )r   r   r   r   r%   r   )
r   ndarrayr   r   rj   viewpermutationr   r2   rp   )r	   r(   r   origpermrq   r@   r
   r
   r   test_permutation_subclass   s   

z(TestRegression.test_permutation_subclassc                 C   sZ   | j ddks
J t| j dgd | j jdgdd}tjdgtjd}t|| d S )Ng        floatr0   )r   standard_gammar   r   r2   rZ   )r	   actualr7   r
   r
   r   test_gamma_0   s
   zTestRegression.test_gamma_0c                 C   s$   t | jjdddttjj d S )NgKH9r   )r:   r   )r   r   	geometricr   iinforD   maxr   r
   r
   r   test_geometric_tiny_prob   s   z'TestRegression.test_geometric_tiny_probc                 C   s.   d}| j jd|d}t|tj|tjd d S )Nr9   i'  r   r0   )r   zipfr   r   r=   rD   r	   rU   sampler
   r
   r   test_zipf_large_parameter   s   z(TestRegression.test_zipf_large_parameterc                 C   s2   d}| j jd|d}t|dk |d ksJ d S )Ni g    ?r   l            r%   )r   r   r   rR   r   r
   r
   r   test_zipf_a_near_1   s   z!TestRegression.test_zipf_a_near_1N)rl   rm   rn   r   r   r"   r,   r8   rA   rE   rK   rL   rQ   rX   rc   ri   rk   rw   r{   r   r   r   r
   r
   r
   r   r      s(    		r   )
numpy.testingr   r   numpyr   r\   numpy.randomr   r   r   r
   r
   r
   r   <module>   s
    