
    2VhK                         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	 d Z
ddZdd	Zdd
ZddZddZd ZddZddZddZddZddZy)    N)standardize_dtype)floatx)SeedGenerator)	draw_seed)make_default_seedc                     t        | j                        dk(  r| S t        j                  t        j                  j                  | t        j                  j                  dz
        d      } | S )Nint32   dtype)r   r   tfcastmathfloormodr	   maxseeds    S/home/dcms/DCMS/lib/python3.12/site-packages/keras/src/backend/tensorflow/random.py
_cast_seedr   
   sM     $/wwrww''bhhllQ.>?wO    c                     |xs
 t               }t        t        |            }t        j                  j                  | ||||      S Nshapemeanstddevr   r   )r   r   r   r   randomstateless_normalr   s        r   normalr      sC    VXEio&D99%%$vU &  r   c                     |xs
 t               }t        t        |            }t        j                  j                  | t        j                  ||      t        j                  ||      ||      S )Nr   minvalmaxvalr   r   )r   r   r   r   r   stateless_uniformr   r!   s        r   uniformr%      s]    VXEio&D99&&wwvu%wwvu% '  r   c                     t        t        |            }t        j                  j	                  | ||      }t        j
                  ||      S )Nr   )r   r   r   r   stateless_categoricalr   )logitsnum_samplesr   r   outputs        r   categoricalr+   +   s<    io&DYY,,V[t,LF7765!!r   c                     |}t        |      dvrd}t        t        |            }t        j                  j                  | ||||      }t        j                  ||      S )N)r	   int64r-   r!   )r   r   r   r   r   r$   r   )r   r"   r#   r   r   intermediate_dtyper*   s          r   randintr/   1   se    '99$io&DYY((  ) F 7765!!r   c                     |xs
 t               }t        t        |            }t        j                  j                  | ||||      S r   )r   r   r   r   r   stateless_truncated_normalr   s        r   truncated_normalr2   @   sC    VXEio&D99//$vU 0  r   c                     |t        j                  |       S t        j                  |       }g }t        |      D ]  \  }}|j                  |||   n|        |S )N)r   r   	enumerateappend)inputsnoise_shapeconcrete_inputs_shapeconcrete_noise_shapeivalues         r   _get_concrete_noise_shaper<   H   si    xxHHV,k* 
5##(-!!$5	

  r   c                     t        t        |            }t        | |      }t        j                  j
                  j                  | |||      S )N)rater7   r   )r   r   r<   r   nnexperimentalstateless_dropout)r6   r>   r7   r   s       r   dropoutrB   U   sJ    io&D+FK@K55//	 0  r   c                     t        t        |            }t        j                  t        j                  j                  t        j                  |       |   g|            }t        j                  | ||      S )N)r   r   )axis)r   r   r   argsortr   r$   r   gather)xrD   r   indicess       r   shufflerI   `   sZ    io&Djj
		##288A;t+<*=D#IG 99Qd++r   c                     |xs
 t               }t        t        |            }|}t        |      dk(  rd}t	        j
                  t        j                  j                  | |||      |      S )Nbfloat16float32)alphar   r   )r   r   r   r   r   r   r   stateless_gamma)r   rM   r   r   r.   s        r   gammarO   h   sn    VXEio&D:-&77
		!!$	 	" 	
 	 r   c           	          |xs
 t               }t        t        |            }|}t        |      dk(  rd}t	        j
                  t        j                  j                  | ||||      |      S )NrK   rL   )r   r   countsprobsoutput_dtype)r   r   r   r   r   r   r   stateless_binomial)r   rQ   probabilitiesr   r   r.   s         r   binomialrV   z   sq    VXEio&D:-&77
		$$+ 	% 	
 		 	r   c                    |xs
 t               }t        t        |            }|dz   }|}t        |      dk(  rd}t	        j
                  ||      }t	        j
                  ||      }t	        j                  ||       }t	        j                  ||       }t	        j                  t        j                  j                  | |||      |      }t	        j                  t        j                  j                  | |||      |      }	|||	z   z  }
|
S )N   rK   rL   r   )r   r   rM   r   )
r   r   r   r   r   convert_to_tensorbroadcast_tor   r   rN   )r   rM   betar   r   seed_1seed_2r.   gamma_agamma_bsamples              r   r[   r[      s   VXE 	$(F b[F :-&  .@AE,>?D OOE5)E??4'Dgg
		!!fE9K 	" 	
 		G gg
		!!fD8J 	" 	
 		G ')*FMr   )g        g      ?NN)r-   N)r	   N)NN)r   N)
tensorflowr   keras.src.backend.commonr   keras.src.backend.configr   keras.src.random.seed_generatorr   r   r   r   r   r%   r+   r/   r2   r<   rB   rI   rO   rV   r[    r   r   <module>rf      sS     6 + 9 5 =
	""
 ,$&1r   