The code is simple:
import numpy
rng = numpy.random.default_rng(0)
control = rng.choice([0,1],p=[0.5,0.5])
for i in range(100):
print(control == rng.choice([0,1],p=[0.5,0.5]))
# Not only True gets printed
Probably I am missing something, but the way I understand this is that rng.choice, run with the exact same parameters, should always return the same thing if it was seeded. What am I missing?