o
    :‘ðiž  ã                   @   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µÂ5gœWw'&l¡7)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{®Gázd?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 )Ng ÂëþKH´9r   )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
    