Ben 1 ile 100 arasında bir 'Oranlardaki' numarası ile satır bir veri kümesi her vardır. Ben mümkün olan en verimli şekilde yapmak için arıyorum. Oran mutlaka 100'e kadar katmayan.
Ben bir kaç fikir vardı.
a) Select the whole dataset and then add all the odds up and generate a random number between 1 and that number. Then loop through the dataset deducting the odds from the number until it is 0.
Ben sadece gerekli satırları seçmek olabilir eğer öyleyse ben kabul veritabanı üzerindeki etkisini en aza indirmek için umuyordum.
b)
SELECT * FROM table WHERE (100*RAND()) < odds
I-LIMIT 0,1
kabul
Ürün aynı olasılık varsa Ama o zaman sadece biri iade edilecektir
Alternatif olarak, tüm veri kümesini almak ve oradan rastgele bir seçim ... ama sonra oran böylece oran (hatta daha çok) yüksek oran lehine eğik hale oran olmadan bahislerle rastgele ve daha sonra rastgele bir olur gibi etkilenir .
Ben order by odds
ASC sonra tüm veri kümesini almak ve daha sonra PHP ile ilk kaydın (düşük) olarak aynı oran ile satır dışında rastgele alabilir sanırım.
Beceriksiz bir çözüm gibi görünüyor.
Herkes üstün bir çözüm var mı? Değilse Yukarıdakilerin hangisi en iyisi?