o
    ?Hh                     @   s   d dl Zd dlZd dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZmZ dd Zdd	 Zd
d Zdd Zdd ZdddZdd Zdd ZdS )    N)assert_array_almost_equal)comb_our_rand_r_py)_random_choice_cscsample_without_replacementc                   C   s<   t t tddd W d    d S 1 sw   Y  d S )N      unknown)pytestraises
ValueErrorr    r   r   _/home/air/sanwanet/gpt-api/venv/lib/python3.10/site-packages/sklearn/utils/tests/test_random.py1test_invalid_sample_without_replacement_algorithm   s   "r   c                     s:   d} | D ] 	 d fdd	}t | t| t| qd S )N)autotracking_selectionreservoir_samplingpoolc                    s   t | | |dS )N)methodrandom_stater   )n_population	n_samplesr   mr   r   !sample_without_replacement_method   s   zUtest_sample_without_replacement_algorithms.<locals>.sample_without_replacement_method)N)check_edge_case_of_sample_intcheck_sample_intcheck_sample_int_distribution)methodsr   r   r   r   *test_sample_without_replacement_algorithms   s   
r!   c                 C   s&  t t | dd W d    n1 sw   Y  t t | dd W d    n1 s/w   Y  | ddjdks>J | ddjdksHJ | ddjdksRJ | ddjdks\J t t | dd W d    n1 sqw   Y  t t | dd W d    d S 1 sw   Y  d S )Nr         )r   )r"   r   )r   r   r   shaper   r   r   r   r   $   s    "r   c                 C   sz   d}t |d D ]&}| ||}t||ksJ t|}t||ks%J t||k s.J qt| dddks;J d S )Nd   r"   r   )rangelennpuniquesizeall)r   r   r   sr*   r   r   r   r   ;   s   

r   c                 C   sp   d}d}t |D ]-}t||dd}i }t |D ]}d |t| ||< t||kr* nqtdt||f qd S )N
   '  T)exactz7number of combinations != number of expected (%s != %s))r'   r   	frozensetr(   AssertionError)r   r   n_trialsr   
n_expectedoutputir   r   r   r   M   s$   
r   r/      c                 C   sN  t ddgt g dg}t ddgt g dg}t| |||}t|s*J tt|D ]}t ||	 
 t|  }t|| |dd q0ddgddgg}t ddgt g dg}t| ||d	}t|spJ tt|D ]}t ||	 
 t|  }t|| |dd qvt ddgt g dg}t d
dgt g dg}t| |||}t|sJ tt|D ]}t j||	 
 t|| d|  }t|| |dd qdgdgg}t d
dgt dgg}t| ||d	}t|sJ tt|D ]}t ||	 
 |  }t|| |dd q
d S )Nr   r"   r   r"   r#         ?333333?皙?g333333?)decimalr#   )r   r9   r9   )r   classesr                 ?)r?   r@   r?   )	minlength)r)   arrayr   spissparser'   r(   bincountgetcoltoarrayravelfloatr   )r   r   r>   class_probabilitiesgotkpr   r   r   test_random_choice_cscm   sL     rN   c                  C   s  t ddgt g dg} t ddgt g dg}tt td| |d W d    n1 s3w   Y  t ddgt g d	g} t ddgt g dg}tt td| |d W d    n1 skw   Y  t d
dgt g dg} t ddgt g dg}tt td| |d W d    n1 sw   Y  t ddgt g dg} t ddgt g dg}tt td| |d W d    d S 1 sw   Y  d S )Nr   r"   )r   r"   r#      r9   r:   r	   a1)zrQ   2g@r<   )r<   g?g"@r8   r;   )r)   rB   r   r   r   r   )r>   rJ   r   r   r   test_random_choice_csc_errors   s(   "rT   c                   C   s$   dt dksJ dt dksJ d S )Ni=(i=Ki!  r   r   r   r   r   r   test_our_rand_r   s   rU   )r/   r7   )numpyr)   r   scipy.sparsesparserC   numpy.testingr   scipy.specialr   sklearn.utils._randomr   sklearn.utils.randomr   r   r   r!   r   r   r   rN   rT   rU   r   r   r   r   <module>   s    
 7