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

Dystrybucja RAND() w MySQL

Nie udało mi się szybko znaleźć kodu źródłowego funkcji; zobaczenie tego może pomóc w uzyskaniu lepszej odpowiedzi. To powiedziawszy, wygląda na „nie… ale trochę blisko”.

Z dokumentacji widzę, że próbuje być losowy (i opcjonalnie możesz to zainicjować); ale są dwa zastrzeżenia, które oznaczają, że może nie zawsze być jednolity, gdy oczekujesz, że pierwszy numer znajduje się w dokumentacji:

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. 

tj. kod do niego jest wątpliwy, ponieważ jest prawdziwym generatorem liczb losowych - jest wystarczająco dobry do większości celów, ale nie można mu ufać, jeśli chodzi o użycie, powiedzmy, w szyfrowaniu, i założę się, że nie można mu ufać, że jest tak jednolite, jak można się spodziewać.

Ich twierdzenie, że nie jest doskonały, oznacza, że ​​prawie na pewno nie przejdzie przynajmniej niektórych z tych testów; sposób jest nadal niejasny, ale jeśli nie jest to doskonały RNG, nie zobaczysz idealnie jednolitego rozkładu; Spodziewałbym się luk lub szczytów zakresów, które są bardziej/mniej powszechne.http://www.stat.fsu.edu/pub/diehard/cdrom/pscript/monkey.ps (od tamtej pory wykonano inną pracę, ale to nadal jest kluczowa praca w walidacji RNG).

Mogę się założyć, że stojący za nim kod z pewnością nie spróbuj zagwarantować jednolitą dystrybucję, ponieważ zrobienie tego (śledzenie historii tego, co już się pojawiło) spowodowałoby marnowanie masy pamięci. W każdym razie, jeśli wygenerowałeś już wiele wartości za pomocą idealnego RNG, nic nie gwarantuje, że jeśli twoje dotychczasowe wartości były niskie, następne będą wysokie. Zawsze będzie tak samo losowy.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak znaleźć wiersze, które mają wartość zawierającą małą literę?

  2. Zapytanie wybierające MySQL ze zmienną nazwą kolumny

  3. Jak tworzyć wyzwalacze w bibliotece migracji Codeigniter

  4. czy możemy wstawić do dwóch tabel za pomocą jednej instrukcji sql?

  5. Zaznaczyć wszystkie kolumny z wyjątkiem jednej w MySQL?