Losowanie rekordów w oparciu o współczyniki

Losowanie rekordów w oparciu o współczyniki
  • Rejestracja: dni
  • Ostatnio: dni
0

Witam, posiadam bazę o takiej budowie:

id wartość plusy minusy
Kolumna 1 Kolumna 2 Kolumna 3 Kolumna 4

Chce wylosować rekord(lub kilka rekordów). Jednak z uwzględnieniem tego, że elementy które procentowo mają dużo plusów losują się dużo częściej niż te które mają dużo minusów.

Ma ktoś jakiś pomysł jakich funkcji użyć? Jak takie zapytanie powinno wyglądać?

Hrypa
  • Rejestracja: dni
  • Ostatnio: dni
0

Musisz je uszeregować korzystając z funkcji RAND() - losowa liczba z przedziału [0,1]. Na przykład:

Kopiuj
select * from TABELA t ORDER BY RAND() * plusy DESC LIMIT 3;

Losuje 3 rekordy, gdzie największe prawdopodobieństwo mają te z największą liczbą plusów. W zależności, co dokładnie chcesz osiągnąć, możesz trochę inaczej losować, np.:

Kopiuj
select * from TABELA t ORDER BY RAND() * (plusy - minusy) DESC LIMIT 3;

Tutaj największą szansę mają rekordy o największej przewadze plusów nad minusami. I tak dalej.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.