Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [mój skrypt] optymalizacja, jak zoptymalizować skrypt do Lotto?
tomilipin
post
Post #1





Grupa: Zarejestrowani
Postów: 70
Pomógł: 0
Dołączył: 28.01.2004
Skąd: że znowu ლ(ಠ益ಠლ

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


Witam,
napisałem sobie dziś prosty sktypr do Dużego Lotka, nazwałem go Tata- Lizator (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) (tak... ten emot jest odpowiedni) ale zrobiłem to bardzo prosto, dokładnie tak samo jak działa mój mózg...
Chodzi mi teraz o jakieś wskazówki na temat optymalizacji tegoż skryptu. Jestem pewien że można to samo wykonać w pętlach. Próbowałem oczywiście już wielokrotnie! ale niestety, nie udało mi się... Nie wyskakiwały blędy tylko np. nic nie pojawiało się na stronie, albo skrypt zapętlał się i nie wychodził z FOR albo WHILE.
Ogólnie wiem jak to zrobić w tzw. pseudojęzyku (czyli na ludzkie zrozumienie) ale jak tok myślenia przełożyć na php, to już nie mam pomysłu... Widocznie źle myślę...
Dlatego proszę Was o pomoc, oto cały kod skryptu:
  1. <?php
  2. $liczba[1]=rand(1,49);
  3. $liczba[2]=rand(1,49);
  4. $liczba[3]=rand(1,49);
  5. $liczba[4]=rand(1,49);
  6. $liczba[5]=rand(1,49);
  7. $liczba[6]=rand(1,49);
  8.  
  9. while($liczba[2]==$liczba[1]) {
  10. $liczba[2]=rand(1,49);
  11. }
  12. while($liczba[3]==$liczba[2] or $liczba[3]==$liczba[1]) {
  13. $liczba[3]=rand(1,49);
  14. }
  15. while($liczba[4]==$liczba[3] or $liczba[4]==$liczba[2] or $liczba[4]==$liczba[1]) {
  16. $liczba[4]=rand(1,49);
  17. }
  18.  
  19. while($liczba[5]==$liczba[4] or $liczba[5]==$liczba[3] or $liczba[5]==$liczba[2] or $liczba[5]==$liczba[1]) {
  20. $liczba[5]=rand(1,49);
  21. }
  22.  
  23. while($liczba[6]==$liczba[5] or $liczba[6]==$liczba[4] or $liczba[6]==$liczba[3] or $liczba[6]==$liczba[2] or $liczba[6]==$liczba[1]) {
  24. $liczba[6]=rand(1,49);
  25. }
  26.  
  27. echo &#092;"$liczba[1]<br>\";
  28. echo &#092;"$liczba[2]<br>\";
  29. echo &#092;"$liczba[3]<br>\";
  30. echo &#092;"$liczba[4]<br>\";
  31. echo &#092;"$liczba[5]<br>\";
  32. echo &#092;"$liczba[6]<br>\";
  33.  
  34. ?>


Cały problem tkwi oczywiście w tym, że liczby nie mogą się powtarzać!
PS. skrypt testowany we Flashu (ActionScript) wygląda bardzo fajnie, losuje liczby na bieżąco, widać jak się zmieniają (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował tomilipin 7.10.2004, 18:05:14
Go to the top of the page
+Quote Post
Vertical
post
Post #2





Grupa: Zarejestrowani
Postów: 848
Pomógł: 0
Dołączył: 7.07.2004
Skąd: Wrocław

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


MANUAL- for();
MANUAL - while();
MAN powie Ci wszystko...
Go to the top of the page
+Quote Post
hwao
post
Post #3


Developer


Grupa: Moderatorzy
Postów: 2 844
Pomógł: 20
Dołączył: 25.11.2003
Skąd: Olkusz




  1. <?php
  2.  
  3. function losuj( $arrNie )
  4. {
  5.  $new = rand( 1, 49 );
  6.  while( !in_array( $new, $arrNie ) )
  7.  {
  8.  $new = rand( 1, 49 );
  9.  }
  10.  
  11. return $new;
  12. }
  13. $i = 0;
  14. $arrT = array();
  15. while( 5 == $i )
  16. {
  17.  $i++;
  18.  
  19.  $arrT[] = losuj( $arrT );
  20. }
  21.  
  22. print_r( $arrT );
  23. ?>


Nie wiem czy bedzie dzialac pisane z palca ale zasade masz
Go to the top of the page
+Quote Post
tomilipin
post
Post #4





Grupa: Zarejestrowani
Postów: 70
Pomógł: 0
Dołączył: 28.01.2004
Skąd: że znowu ლ(ಠ益ಠლ

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


Vertical => masz mnie za idiotę? Pisałem przecież że nie daję rady z FOR i WHILE. Ja wiem że z nich trzeba skorzystać, maual php to było pierwsze miejsce gdzie zajrzałem.

hwao => użyłeś funkcji których nie znam więc poczytam o nich, a na razie zostawię Tata- Lizatora

dzięki za pomoc
Go to the top of the page
+Quote Post
kszychu
post
Post #5





Grupa: Przyjaciele php.pl
Postów: 2 712
Pomógł: 23
Dołączył: 27.10.2003
Skąd: z kontowni

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


A ja spróbuję pro¶ciej; chodzi przecież o wylosowanie sześciu liczby i by te liczby się nie powtarzały.
  1. <?php
  2.  
  3. $liczby = array();
  4. for($i = 0; $i < 6; $i++) {
  5. do {
  6. $liczba = rand(1, 49);
  7. } while(in_array($liczba, $liczby));
  8. $liczby[] = $liczba;
  9. }
  10. print_r($liczby);
  11.  
  12. ?>
Go to the top of the page
+Quote Post
scanner
post
Post #6





Grupa: Zarząd
Postów: 3 503
Pomógł: 28
Dołączył: 17.10.2002
Skąd: Wrocław




  1. <?php
  2. /**
  3.  * @return array
  4.  * @param int $iItems
  5.  * @param int $iMax
  6.  * @desc Returns $iItems randomly generated numbers from range (1 - $iMax)
  7.  * @author scanner <scanner@scanner.eu.org>
  8.  * @date 2004/10/08
  9. */
  10. function randomizer( $iItems, $iMax )
  11. {
  12. for ( $i = 1; $i <= $iMax; $i++)
  13. {
  14. $aItems[] = $i;
  15. }
  16. shuffle( $aItems );
  17.  
  18. $aResult = array_chunk( $aItems, $iItems);
  19. return $aResult[0];
  20. }
  21.  
  22. /** Usage **/
  23. $aDrawed = randomizer( 7, 49 );
  24. echo implode( ', ', $aDrawed );
  25. ?>
Go to the top of the page
+Quote Post
Vertical
post
Post #7





Grupa: Zarejestrowani
Postów: 848
Pomógł: 0
Dołączył: 7.07.2004
Skąd: Wrocław

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


Cytat
Vertical => masz mnie za idiotę?

...Skąd miałem wiedzieć, że zajrzałeś? Uwierz mi, że są ludzie, którzy się pytają zanim zajrzą do manuala.
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #8





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


Moja funkcja wylosujesz dowolna ilosc elementow z dowolnego zbioru (tablicy).
  1. <?php
  2. /*
  3.  * @return array
  4.  * @param int $iHowMuchElements -- ile elementow zbioru (tablicy) wylosowac
  5.  * @param int $aElements -- zbior elementow z ktorego losujemy
  6.  * @desc Zwraca $iHowMuchElements losowych elementow ze zbioru $aElements
  7.  * @author Dr Bonzo
  8.  */
  9. function drawElements( $iHowMuchElements, $aElements )
  10. {
  11.     shuffle( $aElements );
  12.     
  13.     for ( $i = 0; $i < $iHowMuchElements; $i++ )
  14.     {
  15.         $aResult[] = array_pop( $aElements ); // lub array_shift
  16.     }
  17.     
  18.     return $aResult;
  19. }
  20.  
  21.  
  22. /* Dla duzego lotka, zbior liczbe calk. [1; 49] */
  23. for ( $i = 0; $i < 49; $i++ )
  24. {
  25.     $aElements_1[ $i ] = $i + 1;    
  26. }
  27.  
  28. $x = drawElements( 6, $aElements_1 );
  29. $xx = implode( ', ', $x );
  30. print( &#092;"$xx<br />\" );
  31.  
  32.  
  33. /* 10 liter z jakiegos tam zakresu [A, (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ?] */
  34. for ( $i = 0; $i < 24; $i++ )
  35. {
  36.     $aElements_2[ $i ] = chr( 65 + $i );
  37. }
  38.  
  39. $y = drawElements( 10, $aElements_2 );
  40. $yy = implode( ', ', $y );
  41. print( &#092;"$yy<br />\" );
  42.  
  43. ?>


------------------
a teraz spojzcie na to:
Cytat
mixed array_rand ( array input [, int num_req])

array_rand() is rather useful when you want to pick one or more random entries out of an array. It takes an input array and an optional argument num_req which specifies how many entries you want to pick - if not specified, it defaults to 1.

If you are picking only one entry, array_rand() returns the key for a random entry. Otherwise, it returns an array of keys for the random entries. This is done so that you can pick random keys as well as values out of the array.

hehe

Ten post edytował dr_bonzo 19.01.2005, 12:49:25
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 - 12:38