Spaces:
Running
Running
# Use `Any` as the return type to avoid mypy problems with Union data types, | |
# because numpy can return single number and ndarray | |
import random as py_random | |
from typing import Any, Optional, Sequence, Type, Union | |
import numpy as np | |
from .core.transforms_interface import NumType | |
IntNumType = Union[int, np.ndarray] | |
Size = Union[int, Sequence[int]] | |
def get_random_state() -> np.random.RandomState: | |
return np.random.RandomState(py_random.randint(0, (1 << 32) - 1)) | |
def uniform( | |
low: NumType = 0.0, | |
high: NumType = 1.0, | |
size: Optional[Size] = None, | |
random_state: Optional[np.random.RandomState] = None, | |
) -> Any: | |
if random_state is None: | |
random_state = get_random_state() | |
return random_state.uniform(low, high, size) | |
def rand(d0: NumType, d1: NumType, *more, random_state: Optional[np.random.RandomState] = None, **kwargs) -> Any: | |
if random_state is None: | |
random_state = get_random_state() | |
return random_state.rand(d0, d1, *more, **kwargs) # type: ignore | |
def randn(d0: NumType, d1: NumType, *more, random_state: Optional[np.random.RandomState] = None, **kwargs) -> Any: | |
if random_state is None: | |
random_state = get_random_state() | |
return random_state.randn(d0, d1, *more, **kwargs) # type: ignore | |
def normal( | |
loc: NumType = 0.0, | |
scale: NumType = 1.0, | |
size: Optional[Size] = None, | |
random_state: Optional[np.random.RandomState] = None, | |
) -> Any: | |
if random_state is None: | |
random_state = get_random_state() | |
return random_state.normal(loc, scale, size) | |
def poisson( | |
lam: NumType = 1.0, size: Optional[Size] = None, random_state: Optional[np.random.RandomState] = None | |
) -> Any: | |
if random_state is None: | |
random_state = get_random_state() | |
return random_state.poisson(lam, size) | |
def permutation( | |
x: Union[int, Sequence[float], np.ndarray], random_state: Optional[np.random.RandomState] = None | |
) -> Any: | |
if random_state is None: | |
random_state = get_random_state() | |
return random_state.permutation(x) | |
def randint( | |
low: IntNumType, | |
high: Optional[IntNumType] = None, | |
size: Optional[Size] = None, | |
dtype: Type = np.int32, | |
random_state: Optional[np.random.RandomState] = None, | |
) -> Any: | |
if random_state is None: | |
random_state = get_random_state() | |
return random_state.randint(low, high, size, dtype) | |
def random(size: Optional[NumType] = None, random_state: Optional[np.random.RandomState] = None) -> Any: | |
if random_state is None: | |
random_state = get_random_state() | |
return random_state.random(size) # type: ignore | |
def choice( | |
a: NumType, | |
size: Optional[Size] = None, | |
replace: bool = True, | |
p: Optional[Union[Sequence[float], np.ndarray]] = None, | |
random_state: Optional[np.random.RandomState] = None, | |
) -> Any: | |
if random_state is None: | |
random_state = get_random_state() | |
return random_state.choice(a, size, replace, p) # type: ignore | |