Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Losowy rekord z bazy
devils
post
Post #1





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 30.09.2010

Ostrzeżenie: (10%)
X----


Witam,
Jak wylosować losowo rekord z bazy o odpowiednich parametrach np losowy rekord zależny od poziomu np -5poziomów od naszego do +5poziomów. I dodatkowo jeżeli gracz ma kryjówke na 1 poziomie to będzie częsciej losowany od tego, który ma kryjówke na poziomie np 5.

Myślę, że wyraziłem się jasno i każdy zrozumie o co chodzi, ja niestety nie wiem jak się za to zabrać, nie wiem jak zrobić te szanse zależne od poziomu kryjówki.

Pozdrawiam i z góry dziękuję za pomoc.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
evolucja
post
Post #2





Grupa: Zarejestrowani
Postów: 362
Pomógł: 27
Dołączył: 14.09.2009

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


Tak zwykłe losowanie bezpośrednio przy zapytaniu:
  1. ... WHERE `poziom` BETWEEN -5 AND 5 ORDER BY RAND() LIMIT 1


Aby zrealizować drugą część musiałbyś już wspomóc się PHP.

Ten post edytował evolucja 16.04.2012, 22:03:28
Go to the top of the page
+Quote Post
devils
post
Post #3





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 30.09.2010

Ostrzeżenie: (10%)
X----


No właśnie tę częśc wiem jak zrobić, gorzej z tą 2 bo kompletnie nie wiem jak się za to zabrać.
Go to the top of the page
+Quote Post
sh3d2
post
Post #4





Grupa: Zarejestrowani
Postów: 34
Pomógł: 11
Dołączył: 10.06.2011
Skąd: świdnica

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


logika wygladalaby np tak
- definiujemy stala C = 5
- pobierz poziom kryjowki gracza
- wylosuj liczbe z przedzialu 1:100
- jesli liczba jest wieksza niz powiedzmy poziom * C to losujemy dla gracza
- w przeciwnym wypadku nie robimy nic (czy co tam chcesz)

  1.  
  2. const C = 5;
  3. $r = rand(0,100);
  4. if($r > $poziomKryjowka * C){
  5. losuj();
  6. } else {
  7. // ...
  8. }


im wieksze C tym szanse na losowanie maleja szybciej wraz ze wzrostem poziomu, tylko uwazaj, zeby C*poziom nie wyszlo wieksze niz 100, bo nigdy nie dojdzie do losowania dla danego poziomu (co tez moze byc ciekawa opcja)
Go to the top of the page
+Quote Post
devils
post
Post #5





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 30.09.2010

Ostrzeżenie: (10%)
X----


To teraz ma ktoś pomysł jak to złożyć w całość?
Chce żeby to wyglądało tak.
np. mam poziom 20 i jest 5 graczy, którzy mieszą się w poziomie +/- 5, każy poziom kryjówki zmniejszałby szanse na wyszukanie takiego gracza o 10% (na 9 poziomie byłoby tylko 10% na odszukanie takiego gracza)
Go to the top of the page
+Quote Post
sh3d2
post
Post #6





Grupa: Zarejestrowani
Postów: 34
Pomógł: 11
Dołączył: 10.06.2011
Skąd: świdnica

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


wszystkie informacje do rozwiazania problemu we wlasnym zakresie masz juz podane.

no, moze poza tym, ze zamiast najbardziej banalnego mnozenia (poziom * stala) moglbys uzyc np funkcji logarytmicznej rosnacej takiej, ktorej miejsce zerowe to bedzie 0, a granica 100. dodatkowo przebieg funkcji moglby byc taki, zeby dla x = 9 y wychodzil 90, wtedy dla poziomu 9 szanse bede wynosic 10%, i szanse na losowanie dla coraz wyzszych poziomow beda sukcesywnie malec do zera dla nieskonczenie duzego poziomu (IMG:style_emoticons/default/wink.gif)

nie wiem jak teraz, ale "za moich czasow" (to ostatecznie nie bylo tak dawno) to byla matematyka na poziomie liceum.

Go to the top of the page
+Quote Post
devils
post
Post #7





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 30.09.2010

Ostrzeżenie: (10%)
X----


Informacje może i mam podane ale jak to złożyć w całość?

Pomoże ktoś?

?

Z góry dzięki,
Pozdrawiam.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 19:45