jeudi 30 avril 2020

Numpy random integer generator not covering full interval?

When generating random integers over (almost) the full interval allowed by int64, the generated integers seem to be generated on a smaller range. I'm using the following code:

import numpy
def randGenerationTest(n_gens=100000):
    min_int = 2**63
    max_int = 0
    for _ in range(n_gens) :
        randMatrix = numpy.random.randint(low=1, high = 2**63, size=(1000,1000))
        a = randMatrix.min()
        b = randMatrix.max()
        if a < min_int:
            min_int = a
        if b > max_int :
            max_int = b
    return min_int, max_int

Which is returning the following:

randomGenerationTest()
>>> (146746577, 9223372036832037133)

I agree that [1, 146746577] represents just a tiny fraction of the full range I'm trying to get, but in 1e11 random integers generated in the range of [1,2^63), I should have come just once near to my boundaries? Is this expected behavior when using too large intervals? Or is it cause as a human I can not grasp how enormous these intervals are and that I am already "near enough"?

By the way, this was just to know if the Seed can be randomly set from 1 to 1e63, as it is possible to set it manually to any of those values.




Aucun commentaire:

Enregistrer un commentaire