Eğer bir yazma-nadiren-salt birçok senaryo varsa, tek bir rastgele bir değer varsa açıkça almaya itiraz hangi karar böylece olasılık değerleri önceden hesaplamak isteyebilirsiniz (yani nadiren nesneleri ve olasılıkları değiştirme) (tek bir seçim ile, sıralama yok, tüm kayıtların bir karşılaştırma gereklidir).
E.g. (probabilities in per-mill)
umbrella: 500‰ chance
boots: 250‰ chance
satchel: 100‰ chance
whatever: 100‰ chance
"nothing": 50‰ chance
0 ve 499 aracı "şemsiye" arasında bir rastgele sayı böylece, 500-749 "bot" aldı ve olmuştur.
INSERT INTO foo (name, randmin, randmax) VALUES
('umbrella', 0, 499),
('boots', 500, 749),
('satchel', 750, 849),
('whatever', 850, 949)
Eğer bir nesne eklemek veya bu tabloyu yeniden oluşturmak olasılıkları değiştirmek her zaman.
Sonra ihtiyacınız gibi bir sorgu
SELECT
f.name
FROM
(
SELECT Round(Rand()*1000) as r
) as tmp
JOIN
foo as f
ON
r BETWEEN f.randmin and f.randmax
LIMIT
1
Sadece bir rasgele değer elde edilecek olan ve MySQL hızla kaydı bulmak için (randmin, randmax) üzerinde bir dizin kullanabilirsiniz.