Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Pobieranie z bazy danych z określonym prawdopodobieństwem
Aqu
post 5.02.2015, 13:59:08
Post #1





Grupa: Zarejestrowani
Postów: 279
Pomógł: 58
Dołączył: 14.07.2012

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
trueblue
post 5.02.2015, 14:23:57
Post #2





Grupa: Zarejestrowani
Postów: 6 799
Pomógł: 1827
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


  1. SELECT e.event,e.probability FROM `events` AS e JOIN `events` AS e2 ON e.probability>=e2.probability


--------------------
Go to the top of the page
+Quote Post
Aqu
post 5.02.2015, 19:36:19
Post #3





Grupa: Zarejestrowani
Postów: 279
Pomógł: 58
Dołączył: 14.07.2012

Ostrzeżenie: (0%)
-----


Dzięki wielkie. wink.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.06.2025 - 05:41