Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Phân phối RAND () trong MySQL

Tôi không thể tìm thấy mã nguồn cho hàm một cách nhanh chóng; thấy nó có thể giúp nhận được câu trả lời tốt hơn. Điều đó nói rằng, nó trông giống như một 'không .. nhưng hơi gần'.

Từ tài liệu, tôi có thể thấy nó cố gắng là ngẫu nhiên (và tùy ý bạn có thể gieo nó); nhưng có hai lưu ý có nghĩa là nó có thể không phải lúc nào cũng đồng nhất khi bạn mong đợi nó vào vấn đề đầu tiên là trong tài liệu của nó:

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. 

tức là mã của nó có vấn đề trong việc trở thành một trình tạo số ngẫu nhiên thực sự - nó đủ tốt cho hầu hết các mục đích, nhưng không thể đáng tin cậy để sử dụng, chẳng hạn như mã hóa, và tôi cá là không thể tin cậy được đồng phục như bạn có thể mong đợi.

Tuyên bố của họ rằng nó không hoàn hảo có nghĩa là nó gần như chắc chắn sẽ thất bại ít nhất trong một số thử nghiệm này; vẫn chưa rõ ràng như thế nào, nhưng nếu nó không phải là một RNG hoàn hảo, bạn sẽ không thấy sự phân bố hoàn toàn đồng đều; Tôi mong đợi khoảng trống hoặc đỉnh của phạm vi ít phổ biến hơn. http://www.stat.fsu.edu/pub/diehard/cdrom/pscript/monkey.ps (Đã có những công việc khác kể từ đó nhưng đây vẫn là một số công việc quan trọng trong việc xác thực RNG).

Nó sẽ đặt cược rằng mã đằng sau nó chắc chắn không không cố gắng đảm bảo sự phân bố đồng đều, vì làm như vậy (theo dõi lịch sử của những gì đã xuất hiện) sẽ lãng phí khối lượng bộ nhớ. Trong mọi trường hợp, nếu bạn đã tạo ra nhiều giá trị bằng cách sử dụng RNG hoàn hảo, thì không có gì đảm bảo rằng nếu các giá trị của bạn cho đến nay đều thấp thì giá trị tiếp theo sẽ cao. Nó sẽ luôn ngẫu nhiên ..




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. sắp xếp khoảng cách trong MySQL PHP

  2. Cách nhanh hơn để Chọn trước và sau hàng đã chọn

  3. Cách tạo lại cơ sở dữ liệu từ cơ sở dữ liệu cũ bằng cách sử dụng phần tiếp theo trong node.js

  4. PMA-SQL-ERROR trong khi nhập cơ sở dữ liệu

  5. Nhóm MySQL theo ngày với datetime trộn các ngày giống nhau từ các tháng khác nhau