Utwórz losową permutację 1..N w stałej przestrzeni

Szukam wyliczenia losowej permutacji liczb 1..N w stałej przestrzeni. Oznacza to, że nie mogę przechowywać wszystkich numerów na liście. Powodem tego jest to, że N może być bardzo duża, więcej niż dostępna pamięć. Nadal chcę móc przechodzić przez taką permutację liczb pojedynczo, odwiedzając każdy numer dokładnie raz.

Wiem, że można to zrobić dla pewnego N: Wiele generatorów liczb losowych cyklicznie przechodzi przez całą ich przestrzeń stanu losowo, ale całkowicie. Dobry generator liczb losowych o rozmiarze 32 bitów będzie emitował permutację liczb 0 .. (2 ^ 32) -1. Każda liczba dokładnie raz.

Chcę wybrać N, aby być dowolną liczbą i nie ograniczać się na przykład do mocy 2. Czy jest do tego algorytm?

questionAnswers(6)

yourAnswerToTheQuestion