o
    Ne$  ć                   @   sP   d dl mZ d dl mZ g Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dS )é    N)Ścorec                 C   s@   t | } t ” rtt ” D ]
}t |” | ” qt ”  | ”S )av  

    Sets the seed for global default generator, which manages the random number generation.

    Args:
        seed(int): The random seed to set. It is recommend to set a large int number.

    Returns:
        Generator: The global default generator object.

    Examples:
        .. code-block:: python

            import paddle
            gen = paddle.seed(102)

    )Śintr   Śis_compiled_with_cudaŚrangeŚget_cuda_device_countŚdefault_cuda_generatorZmanual_seedZdefault_cpu_generator)ŚseedŚi© r
   śGD:\Projects\ConvertPro\env\Lib\site-packages\paddle/framework/random.pyr      s
   r   c                  C   s6   g } t  ” rtt  ” D ]}|  t  |” ” ” q| S )zļ

    Get random state of cuda generators.

    Args:
        None.

    Returns:
        GeneratorState:  object.

    Examples:
        .. code-block:: python

            import paddle
            sts = paddle.get_cuda_rng_state()

    )r   r   r   r   Śappendr   Z	get_state©Z
state_listr	   r
   r
   r   Śget_cuda_rng_state4   s
   r   c                 C   sN   t  ” r#t| t  ” kstdtt  ” D ]}t  |” | | ” qdS dS )a  

    Sets generator state for all cuda generators.

    Args:
        state_list(list|tuple): The cuda states to set back to cuda generators. state_list is obtained from get_cuda_rng_state().

    Returns:
        None.

    Examples:
        .. code-block:: python

            import paddle
            sts = paddle.get_cuda_rng_state()
            paddle.set_cuda_rng_state(sts)

    zBLength of cuda state list shoule be equal to the cuda device countN)r   r   Ślenr   Ś
ValueErrorr   r   Z	set_stater   r
   r
   r   Śset_cuda_rng_stateN   s   ’śr   c                 C   s*   | t  ” _| t  ” _t  ” }| | ” dS )aW  
    Sets global seed for generating random numbers.
  
    NOTE(zhiqiu): This is the original implemention of seed. Keeps it temporally
    since CUDA generator is not developed, so we need it in the unittest.

    Args:
        seed(int): The random seed to set. It is recommend to set a large int number.
    
    Returns:
        None
    N)ŚfluidZdefault_main_programZrandom_seedZdefault_startup_programZProgramZglobal_seed)r   Śprogramr
   r
   r   Ś_manual_program_seedj   s   

r   c                 C   s   t  | |” d S ©N)r   Śset_random_seed_generator)Śnamer   r
   r
   r   r   }   s   r   c                 C   s
   t  | ”S r   )r   Śget_random_seed_generator)r   r
   r
   r   r      s   
r   )
Zpaddle.fluidr   r   Ś__all__r   r   r   r   r   r   r
   r
   r
   r   Ś<module>   s   