sql >> Databáze >  >> RDS >> Mysql

Algoritmus pro generování náhodného čísla

Ne, váš algoritmus není škálovatelný. To, co jsem předtím udělal, je vydávat čísla sériově (pokaždé + 1) a poté je procházet operací XOR, aby se bity smíchaly, čímž jsem dostal zdánlivě náhodná čísla. Samozřejmě nejsou ve skutečnosti náhodné, ale očím uživatelů tak vypadají.

[Upravit] Další informace

Logika tohoto algoritmu je taková, že ke generování jedinečných čísel použijete známou sekvenci a poté s nimi deterministicky manipulujete, takže už nevypadají jako sériová. Obecným řešením je použít nějakou formu šifrování, což byl v mém případě XOR flipflop, protože je tak rychlý, jak jen může, a splňuje záruku, že se čísla nikdy nesrazí.

Můžete však použít jiné formy šifrování, pokud chcete preferovat ještě více náhodně vypadající čísla před rychlostí (řekněme, že nepotřebujete generovat manyids najednou). Nyní je důležitým bodem při výběru šifrovacího algoritmu „záruka, že se čísla nikdy nesrazí“. A způsob, jak dokázat, zda šifrovací algoritmus může splnit tuto záruku, je zkontrolovat, zda původní číslo i výsledek šifrování mají stejný počet bitů a zda je algoritmus reverzibilní (bijekce).

[Díky Adamu Lissovi &CesarB pro rozvedení řešení]



  1. Jak mohu použít regex k rozdělení řetězce pomocí řetězce jako oddělovače?

  2. Jak mohu zorganizovat přebytek mysql tabulek?

  3. SQL dotaz kde sloupec ='' vracející se znaky Emoji 🎃 a 🍰

  4. Jak zkontrolovat, zda soubor existuje v PL/SQL?