Presumably numpy duplicates its random number generator once per process, if so then each process uses the same random seed. At a guess the fourth result is different because that thread’s setup stage was delayed.
If you really want different random numbers every time, you could call numpy.random.seed(random.randint(some_large_integer))
in print_map