Notes:
- random.randint(a, b)
: closed range [a,b]
- random.random()
: open range [0.0,1.0)
- random.uniform(a, b)
: a+(b−a)⋅random()
- np.random.randint(low, high)
: open range [low,high)
- np.random.random_integers(low, high)
: closed range [low,high]