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

Question:

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?

Asked By: 24n8

||

Answers:

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
Answered By: Lucas M. Uriarte