Thanks for the example, I’m not sure how you achieved random numbers to be equal between runs. For instance, in the example below they all seem different to me, no?
>>> import random
>>> os.environ['PYTHONHASHSEED'] = '2021'
>>> random.seed(2021)
>>> np.random.seed(2021)
>>> np.random.randn(3,3)
array([[ 1.48860905,  0.67601087, -0.41845137],
       [-0.80652081,  0.55587583, -0.70550429],
       [ 1.13085826,  0.64500184,  0.10641374]])
>>> np.random.randn(3,3)
array([[ 0.42215483,  0.12420684, -0.83795346],
       [ 0.4090157 ,  0.10275122, -1.90772239],
       [ 1.1002243 , -1.40232506, -0.22508127]])
>>> np.random.randn(3,3)
array([[-1.33620597,  0.30372151, -0.72015884],
       [ 2.5449146 ,  1.31729112,  0.0726303 ],
       [-0.25610814,  0.13801041,  1.14723599]])
>>> np.random.randn(3,3)
array([[ 1.37626076, -0.47218397,  0.5240849 ],
       [ 1.48510793,  1.48243225,  0.72813051],
       [-0.38964808,  0.27889376,  0.0519002 ]])
>>> np.random.randn(3,3)
array([[-1.04474368, -0.16150753, -2.79353057],
       [ 0.36164801,  0.24010758,  0.47781228],
       [ 0.20885194,  0.91791163, -1.41177784]])
>>> np.random.randn(3,3)
array([[ 1.22423572, -0.54565772,  0.90674805],
       [-0.98261724, -0.63316189,  0.82552024],
       [-1.28449686, -0.34730878, -1.07776075]])
>>> np.random.randn(3,3)
array([[ 0.97257495,  0.41219116, -0.13208604],
       [-0.67335092,  1.22222171, -0.92641342],
       [ 1.4249938 , -0.12478993,  0.70549192]])
>>> np.random.randn(3,3)
array([[ 0.7195475 ,  0.14146394, -0.65444848],
       [-0.67210417,  0.87036849,  1.00324527],
       [-0.36644983,  1.12805168,  0.7925838 ]])
>>> np.random.randn(3,3)
array([[-1.75084239, -0.80886945, -1.41260181],
       [-0.8030097 ,  0.79828047,  1.75599622],
       [-0.0755042 ,  0.42017682,  0.15655606]])