Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pobieranie z bazy danych z określonym prawdopodobieństwem
Forum PHP.pl > Forum > PHP
Aqu
Załóżmy, że mam tabelę 'events' a w niej pola: event i probability. Pobieram na raz tylko jedno zdarzenia. Chcę uzyskać taki efekt, że im większa wartość probability, tym częściej dane zdarzenia występuje.
Mam dwa rozwiązania, ale oba wydają mi się słabe.

1. Przepuszczamy wszystkie eventy przez pętla, tam będzie druga pętla for, która doda do jakiejś dodatkowej tablicy event tyle razy, ile wynosi 'probability'. A dalej array_rand. Jeśli cache'owałbym tą dodatkową tablicę, to chyba byłoby całkiem wydajne.

2. W php robimy tablicę np. [1, 2, 2, 3, 3, 3, 4, 4, 4, 4] i losujemy, a potem pobieramy losowy event z danym 'probability'. Minus tego jest taki, że jeśli nie będzie zdarzenia z takim prawdopodobieństwem, to trzeba będzie to zapętlić, aż do skutku.

Macie jakieś inne pomysły? Najlepiej gdyby dało się to załatwić jednym zapytaniem. wink.gif
trueblue
  1. SELECT e.event,e.probability FROM `events` AS e JOIN `events` AS e2 ON e.probability>=e2.probability
Aqu
Dzięki wielkie. wink.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.