How to get n unique numbers uniformly from a given range?

313 Views Asked by At

I have a integer range [0, Z). I need to obtain n (where n <= Z) random numbers from this range, but they have to be unique. So I know I can just code up rejection sampling to do this, but I'm wondering if there's a one line python function that can do this for me?

1

There are 1 best solutions below

2
Lucas M. Uriarte On BEST ANSWER

why not use random sampling without replacement

import numpy as np

n = 25
a = range(26)
out = np.random.choice(a, size=n, replace=False)
len(np.unique(out))
>>>25