Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Memilih Baris Secara Rawak daripada Jadual SQL dengan Kebarangkalian Berwajaran?
Pemilihan Baris Rawak dengan Pertimbangan Berwajaran
SQL menyediakan cara untuk memilih baris secara rawak daripada jadual. Walau bagaimanapun, mengambil kira berat bagi setiap baris untuk mempengaruhi kebarangkalian pemilihan adalah tidak mudah.
Satu kaedah untuk mencapai ini ialah pensampelan takungan berwajaran, yang merupakan teknik yang elegan dan berkesan untuk memilih elemen daripada set dengan penggantian dan dengan kebarangkalian berkadar dengan beratnya.
Melaksanakan ini dalam SQL melibatkan:
Pertanyaan ini mencapai ini:
SELECT id, -LOG(RAND()) / weight AS priority FROM your_table ORDER BY priority LIMIT 1;
Dalam pertanyaan ini, LOG(RAND()) menjana nombor rawak teragih seragam antara 0 dan 1. Mengambil logaritma negatif daripada nombor ini secara berkesan menyongsangkan nilainya, menghasilkan nombor yang lebih besar untuk nilai rawak yang lebih kecil. Dengan membahagikan nilai songsang ini dengan berat baris, kami memperoleh keutamaan yang lebih kecil untuk baris dengan pemberat yang lebih tinggi.
Akibatnya, baris dengan pemberat yang lebih tinggi akan mempunyai skor keutamaan yang lebih rendah dan berkemungkinan besar berada di bahagian atas daripada hasil yang diisih, dengan itu meningkatkan peluang mereka untuk dipilih. Pendekatan ini memastikan bahawa kebarangkalian pemilihan setiap baris adalah berkadar dengan beratnya.
Atas ialah kandungan terperinci Bagaimana untuk Memilih Baris Secara Rawak daripada Jadual SQL dengan Kebarangkalian Berwajaran?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!