@@ -758,7 +758,7 @@ def test_randbytes(self):
758
758
# Mersenne Twister randbytes() is deterministic
759
759
# and does not depend on the endian and bitness.
760
760
seed = 8675309
761
- expected = b'f \xf9 \xa8 36 \xd0 \xa4 \xf4 \x82 \x9f \ x8f\x19 \xf0 eo \x02 '
761
+ expected = b'3 \xa8 \xf9 f \xf4 \xa4 \xd0 6 \x19 \ x8f\x9f \x82 \x02 oe \xf0 '
762
762
763
763
self .gen .seed (seed )
764
764
self .assertEqual (self .gen .randbytes (16 ), expected )
@@ -773,19 +773,35 @@ def test_randbytes(self):
773
773
self .assertEqual (b'' .join ([self .gen .randbytes (4 ) for _ in range (4 )]),
774
774
expected )
775
775
776
- # Each randbytes(2) or randbytes(3) call consumes 4 bytes of entropy
776
+ # Each randbytes(1), randbytes(2) or randbytes(3) call consumes
777
+ # 4 bytes of entropy
777
778
self .gen .seed (seed )
778
- expected2 = b'' .join (expected [i :i + 2 ]
779
+ expected1 = expected [3 ::4 ]
780
+ self .assertEqual (b'' .join (self .gen .randbytes (1 ) for _ in range (4 )),
781
+ expected1 )
782
+
783
+ self .gen .seed (seed )
784
+ expected2 = b'' .join (expected [i + 2 : i + 4 ]
779
785
for i in range (0 , len (expected ), 4 ))
780
786
self .assertEqual (b'' .join (self .gen .randbytes (2 ) for _ in range (4 )),
781
787
expected2 )
782
788
783
789
self .gen .seed (seed )
784
- expected3 = b'' .join (expected [i : i + 3 ]
790
+ expected3 = b'' .join (expected [i + 1 : i + 4 ]
785
791
for i in range (0 , len (expected ), 4 ))
786
792
self .assertEqual (b'' .join (self .gen .randbytes (3 ) for _ in range (4 )),
787
793
expected3 )
788
794
795
+ def test_randbytes_getrandbits (self ):
796
+ # There is a simple relation between randbytes() and getrandbits()
797
+ seed = 2849427419
798
+ gen2 = random .Random ()
799
+ self .gen .seed (seed )
800
+ gen2 .seed (seed )
801
+ for n in range (9 ):
802
+ self .assertEqual (self .gen .randbytes (n ),
803
+ gen2 .getrandbits (n * 8 ).to_bytes (n , 'little' ))
804
+
789
805
790
806
def gamma (z , sqrt2pi = (2.0 * pi )** 0.5 ):
791
807
# Reflection to right half of complex plane
0 commit comments