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

Разпределение на RAND() в MySQL

Не успях бързо да намеря изходния код за функцията; виждането му може да помогне за получаване на по-добър отговор. Въпреки това изглежда като „не... но доста близо“.

От документацията виждам, че се опитва да бъде произволно (и по избор можете да го заредите); но има две предупреждения, които означават, че може да не винаги е еднообразно, когато очаквате, че първият брой е в документацията му:

RAND() is not meant to be a perfect random generator. It is a fast way to generate random numbers on demand that is portable between platforms for the same MySQL version. 

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

Твърдението им, че не е перфектен, означава, че почти сигурно ще се провали поне на някои от тези тестове; как все още не е ясно, но ако не е перфектен RNG, няма да видите идеално равномерно разпределение; Бих очаквал или пропуски, или пикове на диапазони, които са повече/по-рядко срещани.http://www.stat.fsu.edu/pub/diehard/cdrom/pscript/monkey.ps (оттогава има друга работа, но това все още е част от ключовата работа при валидирането на RNG).

Можем да се обзаложим, че кодът зад него със сигурност не опитайте се да гарантирате равномерно разпределение, тъй като да го направите (проследяване на историята на това, което вече е излязло) би загубило маса памет. Във всеки случай, ако вече сте генерирали много стойности, използвайки перфектен RNG, нищо не гарантира, че ако всичките ви стойности досега са били ниски, следващата ще бъде висока. Винаги ще бъде също толкова произволно...




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. уеб вложки едновременно

  2. Сума, Средно, Макс., Мин., Брой на NULL стойности

  3. Защо трябва да имаме колона за ID в таблицата с потребители?

  4. отделен брой (*)

  5. Как да коригирам:mysql:[ГРЕШКА] Намерена опция без предходна група в конфигурационния файл /etc/mysql/my.cnf?