Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]Procentowe obliczanie szans
Forum PHP.pl > Forum > Przedszkole
Maveral
Witam. Mam nastepujący problem. Otóż chciałem stworzyć sobie małą symulację kaprysu hehehe Coś na zasadzie jak człowiek ma np. swój ulubiony trunek, ale czasem ma kaprys napić się czegoś innego. Stworzyłem sobie coś takiego:

  1. <?php
  2. if(empty($_POST[submit])) {
  3. echo 'Co pije Adam?<br>
  4. <form action="aaa2.php" method="post">
  5. <select name="trunek">
  6. <option>wino</option>
  7. <option>piwo</option>
  8. </select>
  9. <input type=submit name=submit value=Wyślij>
  10. </form>';
  11. }
  12.  
  13. else {
  14. $look=rand (1,4);
  15. $trunek=$_POST['trunek'];
  16. if ($look==1) {
  17. switch ($trunek) {
  18. case "wino":
  19. echo 'Ahhh dzis dla odmiany piwko :)';
  20. break;
  21. case "piwo":
  22. echo 'Ahhh dziś dla odmiany winko tongue.gif';
  23. }
  24. }
  25. elseif ($look>&& $look<4) {
  26. switch ($trunek) {
  27. case "wino":
  28. echo 'Standardowo winko :)';
  29. break;
  30. case "piwo":
  31. echo 'Super - jak zawsze wypije sobie piwko biggrin.gif';
  32. break;
  33. }
  34. }
  35. elseif ($look==4) {
  36. switch ($trunek) {
  37. case "wino":
  38. echo 'A doleje troche piwa do wina :)';
  39. break;
  40. case "piwo":
  41. echo 'Doleje sobie troszkę wina do piwa tongue.gif';
  42. break;
  43. }
  44. }
  45.  
  46. }
  47. ?>


Niby to działa (tutaj można zobaczyć), ale:

1. Nie wiem czy nie można by tego kodu jeszcze uprościć. Switch jest wygodny, gdyby doszło więcej opcji w formularzu, ale może jednak da się prościej?
2. Może da się jakoś inaczej (czyt. prościej) ustawić procent szans na wylosowanie jednego z trunków? Teraz robię to przez rand(), który losuje liczby z przedziału 1-4. Wylosowanie 2 lub 3 powoduje wylosowanie zaznaczonego w formularzu trunku (czyli 50% szansy).
3. Jak określić zbiór liczb w if? Mam to zrobione jako "$look>1 && $look<4" czyli przedział (2,3), ale może da się jakoś prościej?

Z góry dzięki za odp smile.gif
nexis
Nie wiem na co Ci się taki skrypt przyda co prawda, ale może zaciekawi Cię takie rozwiązanie:

  1. <?php
  2.  
  3. $piwo = array('Ahhh dzis dla odmiany piwko :)', 'Super - jak zawsze wypije sobie piwko biggrin.gif', 'Doleje sobie troszkę wina do piwa tongue.gif');
  4. $wino = array('Ahhh dziś dla odmiany winko tongue.gif', 'Standardowo winko :)', 'A doleje troche piwa do wina :)');
  5.  
  6. if (isset($_POST['trunek'])) echo ${$_POST['trunek']}[array_rand(${$_POST['trunek']}, 1)];
  7. else {
  8. echo '
  9. Co pije Adam?<br />
  10. <form action="'.$_SERVER['PHP_SELF'].'" method="post">
  11. <select name="trunek">
  12. <option value="wino">wino</option>
  13. <option value="piwo">piwo</option>
  14. </select>
  15. <input type="submit" value="wyślij" />
  16. </form>';
  17. }
  18.  
  19. ?>
Darti
  1. <?php
  2. else {
  3. $look=rand (0,3);
  4. $trunek=$_POST['trunek'];
  5.  
  6. $piwo = array(
  7. 'Ahhh dziś dla odmiany winko tongue.gif',
  8. 'Super - jak zawsze wypije sobie piwko biggrin.gif',
  9. 'Super - jak zawsze wypije sobie piwko biggrin.gif',
  10. 'Doleje sobie troszkę wina do piwa tongue.gif'
  11. );
  12.  
  13. $wino = array(
  14. 'Ahhh dzis dla odmiany piwko :)',
  15. 'Standardowo winko :)',
  16. 'Standardowo winko :)',
  17. 'A doleje troche piwa do wina :)'
  18. );
  19.  
  20. echo ${$trunek}[$look];
  21. }
  22. ?>


@nexis był szybszy smile.gif
Maveral
Dzięki wam obu. Wasze propozycje działają tak jak mają działać i zajmują mniej miejsca winksmiley.jpg Tak więc dzięki za szybką odpowiedź i pomoc smile.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.