From 131c0b195daf47fd304dd29502cd0092cc04c08a Mon Sep 17 00:00:00 2001 From: Osman Turan Date: Sun, 3 Oct 2021 05:38:16 +0300 Subject: [PATCH] Add missing randbytes method on random --- Lib/random.py | 3 ++- stdlib/src/random.rs | 8 ++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/Lib/random.py b/Lib/random.py index c9453478a..a2bd91082 100644 --- a/Lib/random.py +++ b/Lib/random.py @@ -59,7 +59,7 @@ __all__ = ["Random","seed","random","uniform","randint","choice","sample", "randrange","shuffle","normalvariate","lognormvariate", "expovariate","vonmisesvariate","gammavariate","triangular", "gauss","betavariate","paretovariate","weibullvariate", - "getstate","setstate", "getrandbits", "choices", + "getstate","setstate", "getrandbits", "randbytes", "choices", "SystemRandom"] NV_MAGICCONST = 4 * _exp(-0.5)/_sqrt(2.0) @@ -775,6 +775,7 @@ weibullvariate = _inst.weibullvariate getstate = _inst.getstate setstate = _inst.setstate getrandbits = _inst.getrandbits +randbytes = _inst.randbytes if hasattr(_os, "fork"): _os.register_at_fork(after_in_child=_inst.seed) diff --git a/stdlib/src/random.rs b/stdlib/src/random.rs index 8f7cfc7fb..84777e8fa 100644 --- a/stdlib/src/random.rs +++ b/stdlib/src/random.rs @@ -144,5 +144,13 @@ mod _random { }; Ok(BigInt::from_biguint(sign, uint)) } + + #[pymethod] + fn randbytes(&self, n: usize) -> PyResult> { + let mut buf = vec![0u8; n]; + let mut rng = self.rng.lock(); + rng.fill_bytes(&mut buf); + Ok(buf) + } } }