Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Algorytm generowania liczby losowej

Nie, twój algorytm nie jest skalowalny. To, co zrobiłem wcześniej, to wydawanie liczb szeregowo (za każdym razem +1), a następnie przepuszczanie ich przez operację XOR, aby pomieszać bity, dając mi pozornie losowe liczby. Oczywiście nie są one losowe, ale w oczach użytkowników tak wyglądają.

[Edytuj] Dodatkowe informacje

Logika tego algorytmu wygląda tak, że używasz znanej sekwencji do generowania unikalnych liczb, a następnie deterministycznie nimi manipulujesz, aby nie wyglądały już seryjnie. Ogólnym rozwiązaniem jest użycie jakiejś formy szyfrowania, która w moim przypadku była przerzutnikiem XOR, ponieważ działa tak szybko, jak to możliwe, i spełnia gwarancję, że liczby nigdy się nie zderzyją.

Możesz jednak użyć innych form szyfrowania, jeśli chcesz, aby bardziej losowo wyglądające liczby niż szybkość (powiedzmy, że nie musisz generować wielu identyfikatorów na raz). Teraz ważnym punktem przy wyborze algorytmu szyfrowania jest „gwarancja, że ​​liczby nigdy się nie zderzą”. Sposobem na udowodnienie, czy algorytm szyfrowania może spełnić tę gwarancję, jest sprawdzenie, czy zarówno oryginalna liczba, jak i wynik szyfrowania mają tę samą liczbę bitów i czy algorytm jest odwracalny (bijection).

[Podziękowania dla Adama Lissa &CesarB za rozwinięcie rozwiązania]



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nodejs wyraża i obiecuje nie robić tego, czego oczekuję

  2. Jak połączyć dwie bazy danych, z tymi samymi danymi, ale z różnymi PK, bez duplikowania pól?

  3. przyznaj zdalny dostęp do bazy danych MySQL z dowolnego adresu IP

  4. auto_increment według grupy

  5. Unikanie dzikich kart MySQL