On Fri, Nov 17, 2023 at 7:11 PM Aaron Meurer <asmeu...@gmail.com> wrote:

> rng.integers() (or np.random.randint) lets you specify lists for low
> and high. So you can just use rng.integers((0,)*len(dims), dims).
>
> Although I'm not seeing how to use this to generate a bunch of vectors
> at once. I would have thought something like size=(10, dims) would let
> you generate 10 vectors of length dims but it doesn't seem to work.
>

`size=(k, len(dims))`

def sample_indices(shape, size, rng=None):
    rng = np.random.default_rng(rng)
    ashape = np.array(shape)
    seen = set()
    while len(seen) < size:
        dsize = size - len(seen)
        seen.update(map(tuple, rng.integers(0, ashape, size=(dsize,
len(shape)))))
    return list(seen)

That optimistic optimization makes this the fastest solution.

-- 
Robert Kern
_______________________________________________
NumPy-Discussion mailing list -- numpy-discussion@python.org
To unsubscribe send an email to numpy-discussion-le...@python.org
https://mail.python.org/mailman3/lists/numpy-discussion.python.org/
Member address: arch...@mail-archive.com

Reply via email to