state.py

839 B · python · 39 lines

1import builtins2import numpy as np3from typing import Any, Optional45class State:67    def __init__(self):8        self._rng = np.random.RandomState()910    @property11    def rng(self):12        return self._rng1314    def seed(self, seed: Optional[int] = None):15        self._rng = np.random.RandomState(seed)1617state = State()1819# API2021def seed(s: Optional[int] = None):22    state.seed(s)2324def bool() -> builtins.bool:25    return builtins.bool(state.rng.choice([True, False]))2627def choice(seq: list) -> Any:28    idx = state.rng.randint(0, len(seq))29    return seq[idx]3031def sample(seq: list, k: int) -> list:32    indices = state.rng.choice(len(seq), size=k, replace=False)33    return [seq[i] for i in indices]3435def shuffle(seq: list):36    state.rng.shuffle(seq)3738def randint(a: int, b: int) -> int:39    return int(state.rng.randint(a, b + 1))