gartajackhats1985's picture
Upload 1633 files
681fa96 verified
raw
history blame
3.06 kB
# 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