Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Memilih Baris Secara Rawak daripada Jadual dengan Kebarangkalian Berwajaran?

Bagaimanakah Saya Boleh Memilih Baris Secara Rawak daripada Jadual dengan Kebarangkalian Berwajaran?

Susan Sarandon
Susan Sarandonasal
2025-01-01 13:38:10639semak imbas

How Can I Randomly Select a Row from a Table with Weighted Probabilities?

Pemilihan Baris Rawak dengan Kebarangkalian Berwajaran

Masalah:

Bayangkan mempunyai jadual dengan lajur seperti 'id,' 'kandungan' dan 'berat.' Anda ingin memilih baris secara rawak daripada jadual ini, dengan mengambil kira nilai 'berat'. Sebagai contoh, jika tiga baris wujud:

id content weight
1 some content 60
2 other content 40
3 something 100

Barisan pertama mempunyai 30% peluang untuk dipilih, baris kedua mempunyai peluang 20% ​​dan baris ketiga mempunyai peluang 50%.

Penyelesaian:

Satu pendekatan ialah menggunakan takungan berwajaran persampelan:

SELECT
  id,
  -LOG(RAND()) / weight AS priority
FROM
  your_table
ORDER BY priority
LIMIT 1;

Kaedah ini membolehkan anda memilih satu daripada banyak elemen dengan kebarangkalian berkadar dengan beratnya. Ia berfungsi dengan berkesan untuk memilih satu elemen.

Teknik ini dihuraikan dalam artikel ini: [Pensampelan Takungan Berwajaran](https://bit.ly/weighted-res-sampling). Ambil perhatian bahawa artikel memilih nilai terbesar POW(RAND(), 1/weight), yang bersamaan dengan memilih nilai terkecil -LOG(RAND()) / weight.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memilih Baris Secara Rawak daripada Jadual dengan Kebarangkalian Berwajaran?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn