sql >> Database teknologi >  >> RDS >> Mysql

Algoritme til generering af et tilfældigt tal

Nej din algoritme er ikke skalerbar. Det, jeg har gjort før, er at udstede numre serielt (+1 hver gang) og derefter sende dem gennem en XOR-operation for at blande bitsene og dermed give mig et tilsyneladende tilfældigt tal. Selvfølgelig er de ikke rigtig tilfældige, men de ser sådan ud for brugernes øjne.

[Rediger] Yderligere oplysninger

Denne algoritmes logik er sådan, at du bruger en kendt sekvens til at generere unikke numre, og derefter manipulerer du dem deterministisk, så de ikke ser serielle længere ud. Den generelle løsning er at bruge en eller anden form for kryptering, som i mit tilfælde var en XOR flipflop, fordi den er så hurtig, som den kan blive, og den opfylder garantien for, at tal aldrig vil kollidere.

Du kan dog bruge andre former for kryptering, hvis du vil foretrække endnu flere tilfældige tal frem for hastighed (f.eks. at du ikke behøver at generere mange id ad gangen). Nu er det vigtige punkt i at vælge en krypteringsalgoritme "garantien for, at tal aldrig vil kollidere". Og en måde at bevise, om en krypteringsalgoritme kan opfylde denne garanti på, er at kontrollere, om både det oprindelige nummer og resultatet af krypteringen har det samme antal bits, og at algoritmen er reversibel (bijection).

[Tak til Adam Liss &CesarB for at uddybe løsningen]



  1. SQL Server-systemdatabaser – Tempdb-vedligeholdelsen

  2. mySQL længde- og breddegradsforespørgsel for andre rækker inden for x mile radius

  3. PHP MySQL indsæt multimensional associativ matrixbygningsforespørgsel fra matrixnøgler

  4. Flere docker-containere til mysql eller én instans med flere databaser