Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Dobranie niepowtarzających się par
Forum PHP.pl > Forum > PHP
Najki
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ś ?
NuLL
Wystaraczy podzielić tą tabliće na dwie po 32 a potem już łatwo - można sobie losowo dobierac.
Najki
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.
bela
A czy nie mozesz poprostu pomieszac tej tablicy dry.gif ?
Najki
Heh, Boże jakie to proste tongue.gif.
Dzięki Wam smile.gif.
dr_bonzo
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>
NuLL
Ja z lenistwa bym zrobil tablice uzytych drużyn tongue.gif albo stringa
Najki
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. ?>
dr_bonzo
Liczby zapisuje sie BEZ apostrofow/cudzyslowow
  1. <?php
  2. for ( $a = 1; $a <= 64; $a++ ) {
  3. ?>

zmuszasz php do setek niepotrzebnych konwersji.
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.