Mysql
 sql >> база данни >  >> RDS >> Mysql

Алгоритъм за генериране на произволно число

Не, вашият алгоритъм не е мащабируем. Това, което съм правил преди, е да издавам числа последователно (+1 всеки път) и след това да ги предавам през операция XOR, за да смесвам битовете, като по този начин ми дават привидно произволни числа. Разбира се, те не са наистина произволни, но изглеждат така за очите на потребителите.

[Редактиране] Допълнителна информация

Логиката на този алгоритъм е така, вие използвате известна последователност за генериране на уникални числа и след това ги манипулирате детерминистично, така че те вече да не изглеждат серийни. Общото решение е да се използва някаква форма на криптиране, което в моя случай беше тригер XOR, защото е възможно най-бърз и отговаря на гаранцията, че числата никога няма да се сблъскат.

Въпреки това можете да използвате други форми на криптиране, ако искате да предпочитате още по-случайни изглеждащи числа, вместо скорост (да речем, че не е необходимо да генерирате много идентификатори наведнъж). Сега важният момент при избора на алгоритъм за криптиране е "гаранцията, че числата никога няма да се сблъскат". И начин да се докаже дали алгоритъмът за криптиране може да изпълни тази гаранция е да се провери дали както оригиналното число, така и резултатът от криптирането имат еднакъв брой битове и дали алгоритъмът е обратим (биекция).

[Благодаря на Адам Лис &CesarB за разширяване на решението]



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL CAST – Как да въведете Cast в MySQL

  2. Как мога да направя „вмъкване, ако не съществува“ в MySQL?

  3. Как да получите броя на дните в месеца в MySQL

  4. Как да форматирате числа със запетаи в MySQL

  5. mysql - Създаване на редове спрямо колони