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
Lepaskan: 2025-01-01 13:38:10
asal
602 orang telah melayarinya

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;
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan