--- /dev/null
+# Stubs for random\r
+# Ron Murawski <ron@horizonchess.com>\r
+# Updated by Jukka Lehtosalo\r
+\r
+# based on http://docs.python.org/3.2/library/random.html\r
+\r
+# ----- random classes -----\r
+\r
+import _random\r
+import sys\r
+from typing import (\r
+ Any, TypeVar, Sequence, List, Callable, AbstractSet, Union, Optional\r
+)\r
+\r
+_T = TypeVar('_T')\r
+\r
+class Random(_random.Random):\r
+ def __init__(self, x: Any = ...) -> None: ...\r
+ def seed(self, a: Any = ..., version: int = ...) -> None: ...\r
+ def getstate(self) -> tuple: ...\r
+ def setstate(self, state: tuple) -> None: ...\r
+ def getrandbits(self, k: int) -> int: ...\r
+ def randrange(self, start: int, stop: Union[int, None] = ..., step: int = ...) -> int: ...\r
+ def randint(self, a: int, b: int) -> int: ...\r
+ def choice(self, seq: Sequence[_T]) -> _T: ...\r
+ if sys.version_info >= (3, 6):\r
+ def choices(self, population: Sequence[_T], weights: Optional[Sequence[float]] = ..., *, cum_weights: Optional[Sequence[float]] = ..., k: int = ...) -> List[_T]: ...\r
+ def shuffle(self, x: List[Any], random: Union[Callable[[], float], None] = ...) -> None: ...\r
+ def sample(self, population: Union[Sequence[_T], AbstractSet[_T]], k: int) -> List[_T]: ...\r
+ def random(self) -> float: ...\r
+ def uniform(self, a: float, b: float) -> float: ...\r
+ def triangular(self, low: float = ..., high: float = ...,\r
+ mode: float = ...) -> float: ...\r
+ def betavariate(self, alpha: float, beta: float) -> float: ...\r
+ def expovariate(self, lambd: float) -> float: ...\r
+ def gammavariate(self, alpha: float, beta: float) -> float: ...\r
+ def gauss(self, mu: float, sigma: float) -> float: ...\r
+ def lognormvariate(self, mu: float, sigma: float) -> float: ...\r
+ def normalvariate(self, mu: float, sigma: float) -> float: ...\r
+ def vonmisesvariate(self, mu: float, kappa: float) -> float: ...\r
+ def paretovariate(self, alpha: float) -> float: ...\r
+ def weibullvariate(self, alpha: float, beta: float) -> float: ...\r
+\r
+# SystemRandom is not implemented for all OS's; good on Windows & Linux\r
+class SystemRandom(Random):\r
+ ...\r
+\r
+# ----- random function stubs -----\r
+def seed(a: Any = ..., version: int = ...) -> None: ...\r
+def getstate() -> object: ...\r
+def setstate(state: object) -> None: ...\r
+def getrandbits(k: int) -> int: ...\r
+def randrange(start: int, stop: Union[None, int] = ..., step: int = ...) -> int: ...\r
+def randint(a: int, b: int) -> int: ...\r
+def choice(seq: Sequence[_T]) -> _T: ...\r
+if sys.version_info >= (3, 6):\r
+ def choices(population: Sequence[_T], weights: Optional[Sequence[float]] = ..., *, cum_weights: Optional[Sequence[float]] = ..., k: int = ...) -> List[_T]: ...\r
+def shuffle(x: List[Any], random: Union[Callable[[], float], None] = ...) -> None: ...\r
+def sample(population: Union[Sequence[_T], AbstractSet[_T]], k: int) -> List[_T]: ...\r
+def random() -> float: ...\r
+def uniform(a: float, b: float) -> float: ...\r
+def triangular(low: float = ..., high: float = ...,\r
+ mode: float = ...) -> float: ...\r
+def betavariate(alpha: float, beta: float) -> float: ...\r
+def expovariate(lambd: float) -> float: ...\r
+def gammavariate(alpha: float, beta: float) -> float: ...\r
+def gauss(mu: float, sigma: float) -> float: ...\r
+def lognormvariate(mu: float, sigma: float) -> float: ...\r
+def normalvariate(mu: float, sigma: float) -> float: ...\r
+def vonmisesvariate(mu: float, kappa: float) -> float: ...\r
+def paretovariate(alpha: float) -> float: ...\r
+def weibullvariate(alpha: float, beta: float) -> float: ...\r