От NumPy Docs -
не
numpy.random.sample (размер = None)
Вернуть случайные числа с плавающей точкой в полуоткрытом интервале [0.0, 1.0).
>>> np.random.random_sample()
0.47108547995356098
>>> np.random.random_sample((5,))
array([ 0.30220482, 0.86820401, 0.1654503 , 0.11659149, 0.54323428])
так что если ваш ndim = 50000
, то вы можете получить случайную выборку сверху и умножить ее на ndim
и округлить до целого. Это может сработать ...