![]() |
![]() ![]() |
![]() |
![]()
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. ![]() |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 799 Pomógł: 1827 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
-------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 279 Pomógł: 58 Dołączył: 14.07.2012 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki wielkie.
![]() |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.06.2025 - 05:41 |