Avoid using the global numpy rng seed, and instead pass around an explict randomstate