Duplicate:
Мне нужен генератор псевдослучайных чисел, который может генерировать числа без повторов в случайном порядке.
Например:
случайное (10)
может вернуться 5, 9, 1, 4, 2, 8, 3, 7, 6, 10
Есть ли лучший способ сделать это, кроме как сделать диапазон чисел и перетасовать их, или проверить сгенерированный список для повторений?
Edit:
Также я хочу, чтобы он был эффективен при создании больших чисел без всего диапазона.
Edit:
Я вижу, что все предлагают алгоритмы перетасовки. Но если я хочу генерировать большое случайное число (1024 байта +), то этот метод будет потреблять гораздо больше памяти, чем если бы я просто использовал обычный RNG и вставил в Set до тех пор, пока он не был заданной длиной, не так ли? Для этого нет лучшего математического алгоритма.