Rumah > pembangunan bahagian belakang > tutorial php > Bagaimana untuk Melaksanakan Pemilihan Rawak Berwajaran dalam MySQL?

Bagaimana untuk Melaksanakan Pemilihan Rawak Berwajaran dalam MySQL?

Mary-Kate Olsen
Lepaskan: 2024-11-09 20:25:02
asal
946 orang telah melayarinya

How to Implement Weighted Random Selection in MySQL?

Pemilihan Rawak Berwajaran dalam MySQL

Seorang pengguna berusaha untuk mendapatkan masukan rawak daripada jadual MySQL yang ditimbang mengikut lajur "Pendarab". Pengganda 0 menunjukkan tiada pemberat, manakala nilai yang lebih tinggi meningkatkan kemungkinan pemilihan.

Pertanyaan asal yang menggunakan SELECT dan RAND() tidak mempunyai keupayaan untuk melaksanakan pemberat. Untuk mengatasi had ini, pendekatan alternatif telah dikenal pasti:

ORDER BY -LOG(1.0 - RAND()) / Multiplier
Salin selepas log masuk

Formula ini secara berkesan memberikan nilai rawak yang lebih tinggi kepada entri dengan pengganda yang lebih tinggi. Adalah penting untuk ambil perhatian bahawa pengganda tidak boleh ditetapkan kepada 0 kerana ia akan mengakibatkan pembahagian dengan ralat sifar. Untuk mengecualikan masukan dengan pengganda 0, klausa WHERE boleh digunakan:

WHERE Multiplier > 0
Salin selepas log masuk

Dengan menggabungkan elemen ini, pertanyaan berikut mencapai pemilihan rawak berwajaran:

SELECT *
FROM table
WHERE Multiplier > 0
ORDER BY -LOG(1.0 - RAND()) / Multiplier
LIMIT 1
Salin selepas log masuk

Formula ini memastikan bahawa penyertaan dengan pengganda yang lebih tinggi mempunyai peluang yang lebih besar untuk dipilih, sambil mengekalkan integriti proses pemilihan rawak.

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Pemilihan Rawak Berwajaran dalam MySQL?. 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