Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][algorytmy] rozdawanie punktów
monkey
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 5.02.2007

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


witam
Mam problem z ułożeniem algorytmu rozdziału punktów.

Sytuacja wygląda następująco: mam do rozdzielenia 1000 punktów i muszę je rozdzielić powiedzmy na 10 userów.

to ile każdy dostanie zależy od tego jaki ma nazwijmy to poziom

powiedzmy ze jest on w zakresie 1-100;

user1 - 10
user2 - 11
user3 - 20
user4 - 35
user5 - 51
user6 - 51
user7 - 70
user8 - 82
user9 - 91
user10 -91

i teraz tak: ten z najmniejszym poziomem ma dostać 0 a reszta w zależności od poziomu

i teraz potrzepuje ułożyć algorytm który odpowiednio każdemu przydzieli punkty

z góry dzięki za pomoc
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
michal_robak
post
Post #2





Grupa: Zarejestrowani
Postów: 115
Pomógł: 12
Dołączył: 13.05.2006

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


Prosta matematyka ... sam byś to zrobił żebyś poświęcił 5 minut :

  1. <?
  2.  
  3. $lista = array("10","11","20","35","51","51","70","82","91","99");
  4. $suma=0;
  5. foreach($lista as $nowa)
  6. {
  7. $suma=$suma + $nowa;
  8. }
  9.  
  10. echo "wynik = ".$suma;
  11. $suma_punktow = 1000;
  12. echo "<br>";
  13. $procenty = $suma_punktow / $suma;
  14. echo "procenty = ".$procenty;
  15. echo "<br>";
  16. $rozdzielone=0;
  17. foreach($lista as $nowa)
  18. {
  19. echo "poziom ".$nowa." otrzymuje ".round($nowa*$procenty)." punktów<br>";
  20. $rozdzielone = $rozdzielone + round($nowa*$procenty);
  21. }
  22.  
  23. echo "Rozdane punkty ".$rozdzielone;
  24. ?>


gdzie $suma = łączna suma poziomów
$suma_punktów = łączna pula punktów do rozdania ( u ciebie 1000)
$procenty = stosunek lacznej liczby punktów do lacznej liczby poziomow

a to wynik tego skryptu:
Kod
wynik = 520
procenty = 1.9230769230769
poziom 10 otrzymuje 19 punktów
poziom 11 otrzymuje 21 punktów
poziom 20 otrzymuje 38 punktów
poziom 35 otrzymuje 67 punktów
poziom 51 otrzymuje 98 punktów
poziom 51 otrzymuje 98 punktów
poziom 70 otrzymuje 135 punktów
poziom 82 otrzymuje 158 punktów
poziom 91 otrzymuje 175 punktów
poziom 99 otrzymuje 190 punktów
Rozdane punkty 999


i wcale najniższy poziom tu u ciebie 10 nie ma dostać 0 punktów bo rozkład ma być równomierny

Ten post edytował michal_robak 25.08.2008, 09:29:29
Go to the top of the page
+Quote Post

Posty w temacie


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: 6.10.2025 - 09:55