Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Dobranie niepowtarzających się par, skrypt losowania par turniejowych
Najki
post
Post #1





Grupa: Zarejestrowani
Postów: 190
Pomógł: 0
Dołączył: 12.02.2004
Skąd: Poznań

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


Mam tablicę $team zawierającą nazwy 64 drużyn ($team[1] - $team[64]). Napotykam problem już na starcie. Jak dobrać losowe pary spośród tych 64 drużyn, aby żadna się nie powtarzała? Próbowałem już na kilka sposobów, ale zawsze coś skopałem :/. Pomoże ktoś ?


--------------------
Go to the top of the page
+Quote Post
NuLL
post
Post #2





Grupa: Zarejestrowani
Postów: 2 262
Pomógł: 21
Dołączył: 3.05.2004
Skąd: Sopot, Krakow, W-wa

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


Wystaraczy podzielić tą tabliće na dwie po 32 a potem już łatwo - można sobie losowo dobierac.


--------------------
Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
Go to the top of the page
+Quote Post
Najki
post
Post #3





Grupa: Zarejestrowani
Postów: 190
Pomógł: 0
Dołączył: 12.02.2004
Skąd: Poznań

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


Zrobiłem tak jak poradziłeś, ale jak sprawdzić, czy dany team został już wylosowany?
Próbowałem tak:
  1. <?php
  2. $rand = rand(1,32);
  3. while (in_array($rand,$mecze) == True) {
  4.  $rand = rand(1,32);
  5. }
  6. $mecze['2'][$i] = $rand;
  7. ?>

Ale nie działa tak jak chcę.
Może to banalne, ale proszę o pomoc w tej kwestii.


--------------------
Go to the top of the page
+Quote Post
bela
post
Post #4


Administrator PHPedia.pl


Grupa: Developerzy
Postów: 1 102
Pomógł: 2
Dołączył: 14.09.2003

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


A czy nie mozesz poprostu pomieszac tej tablicy dry.gif ?


--------------------
Go to the top of the page
+Quote Post
Najki
post
Post #5





Grupa: Zarejestrowani
Postów: 190
Pomógł: 0
Dołączył: 12.02.2004
Skąd: Poznań

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


Heh, Boże jakie to proste tongue.gif.
Dzięki Wam smile.gif.


--------------------
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #6





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

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


Z checi sprawdzenia sei napisalem:
  1. <pre>
  2. <?php
  3. $aPlayers = array();
  4. $aPairs = array();
  5.  
  6. $iN = 64;
  7. for ( $i = 0; $i < $iN; $i++ )
  8. {
  9. $aPlayers[ $i ] = $i;
  10. }
  11.  
  12. shuffle( $aPlayers );
  13.  
  14. for ( $i = 0; $i < $iN / 2; $i++ )
  15. {
  16. $aPairs[ $i ][ 0 ] = array_pop( $aPlayers );
  17. $aPairs[ $i ][ 1 ] = array_pop( $aPlayers );
  18. }
  19. print_r( $aPlayers );
  20. print_r( $aPairs );
  21. ?>
  22. </pre>


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
NuLL
post
Post #7





Grupa: Zarejestrowani
Postów: 2 262
Pomógł: 21
Dołączył: 3.05.2004
Skąd: Sopot, Krakow, W-wa

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


Ja z lenistwa bym zrobil tablice uzytych drużyn tongue.gif albo stringa


--------------------
Javascript, Coffeescript, Node.js, Mongo, CouchDb, chmury, workery & inne bajery - zycie jest zbyt krotkie aby miec nudna prace :)
Go to the top of the page
+Quote Post
Najki
post
Post #8





Grupa: Zarejestrowani
Postów: 190
Pomógł: 0
Dołączył: 12.02.2004
Skąd: Poznań

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


Ja to zrobiłem tak:

  1. <?
  2. $team1 = Array(); $team2 = Array(); $mecze1 = Array(); $mecze2 = Array();
  3.  
  4. for ( $a = '1'; $a <= '64'; $a++ ) {
  5. if ($a > '32') {
  6. $b++;
  7. $team2[$b] = 'Team-'.$a;
  8. } else { 
  9. $team1[$a] = 'Team-'.$a; 
  10. }
  11. }
  12.  
  13. $mecze1 = array_rand($team1, count($team1));
  14. $mecze2 = array_rand($team2, count($team2));
  15.  
  16. $mecze1[32] = $mecze1[0]; $mecze2[32] = $mecze2[0];
  17. unset($mecze1[0]); unset($mecze2[0]);
  18.  
  19. for ( $i = '1'; $i <= '32'; $i++ )
  20. {
  21. echo 'Mecz #'.$i.' &nbsp;'.$team1[$mecze1[$i]].' vs '.$team2[$mecze2[$i]].'<br/>';
  22. }
  23. ?>


--------------------
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #9





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

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


Liczby zapisuje sie BEZ apostrofow/cudzyslowow
  1. <?php
  2. for ( $a = 1; $a <= 64; $a++ ) {
  3. ?>

zmuszasz php do setek niepotrzebnych konwersji.


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 19.08.2025 - 05:32