Chciałbym wiedzieć, czy istnieje funkcja od liczb n-bitowych do liczb n-bitowych, która ma następujące cechy:
- powinien być bijectywny
- Zarówno i powinny być obliczalne dość szybko
- powinien zwrócić liczbę, która nie ma znaczącej korelacji z wprowadzonymi danymi.
Uzasadnienie jest następujące:
Chcę napisać program działający na danych. Niektóre informacje o danych są przechowywane w drzewie wyszukiwania binarnego, w którym klucz wyszukiwania jest symbolem alfabetu. Z czasem dodałem kolejne symbole do alfabetu. Nowe symbole po prostu uzyskają następny bezpłatny numer. Dlatego drzewo zawsze będzie miało niewielkie odchylenie od mniejszych kluczy, co powoduje większe zrównoważenie, niż myślę, że powinno być potrzebne.
Moim pomysłem jest zmieszanie liczb symboli tak, aby były szeroko rozłożone w całym zakresie . Ponieważ liczby symboli mają znaczenie tylko na wejściu i wyjściu, co dzieje się tylko raz, zastosowanie takiej funkcji nie powinno być zbyt drogie.[ 0 , 2 64 - 1 ]
Myślałem o jednej iteracji generatora liczb losowych Xorshift, ale tak naprawdę nie wiem, jak to cofnąć, chociaż teoretycznie powinno to być możliwe.
Czy ktoś zna taką funkcję?
Czy to dobry pomysł?