Ech... No przecież nawet na forum istnieje skrypt jak to zrobić. By było weselej, to nawet dziś w nocy jeden z userów, bazując na takim temacie, zadał mi parę pytań na PW, bo czegoś w nim nie rozumiał, a ja wyjaśniałem jak algorytm losowania zrobić

By nie być gołosłownym ->
http://forum.php.pl/index.php?showtopic=144068 Patrz czytaj zrozum algorytm, porównaj ze stroną podaną w temacie i sam napisz własny

EDIT: Posłałem juz gotowca
niemal na PW i rzuce go tutaj dla potomności i innych, zeby terminarza nie męczyli jako nowy temat co kilka dni na forum:
// Tablica z nazwami drużyn
$teams = array( 'Team1', 'Team2', 'Team3', 'Team4', 'Team5', 'Team6' ); $rounds = array(); // Tu trzymamy zapis kolejki function matches($order, $teams) { // Dodatkowa funkcja, która nam z przeliczonej linii stworzy pary zespołów :)
for($i = 0, $len=$count/2; $i<$len; ++$i) {
$round[] = array($teams[$order[$i]], $teams[$order[$count-$i-1
]]); }
return $round;
}
// Pierwsza kolejka jest banalna, bo to po prostu stworzenie par z istniejącej tabeli zespołów
for ($i = 0
, $len = count($teams)-2
, $jump = ceil(count($teams)/2
); $i<$len; ++$i ) { $line = $rounds[$i]['order']; // pobranie ostatniej linii sparowania zespołów
for($curr = 0, $last = $len+1; $curr < $last; ++$curr ) {
$line[$curr] += $jump; // dodanie niezmiennika ceil(n/2)
if($line[$curr] > $len) {
$line[$curr] -= $last; // jeśli za duży odjęcie (n-1)
}
}
$rounds[] = array('order' => $line, 'round' => matches
($line, $teams)); // zapis do rundy kolejności w kolejce i sparowania drużyn }
var_dump($rounds); // wyświetlenie wyników
Czemu
niemal? Bo to jest tylko dla
parzystej liczby drużyn połowa kolejki. Dla nieparzystej zróbcie sobie sami

A drugą połowę kolejki, bazując na temacie jaki podałem też sobie sami wyskrobcie

EDIT2: Jak widać... Jest to naprawdę prosta funkcja, z raptem 2 pętlami i if-em, oraz pomocniczą, która jedynie
formatuje zapis kolejki. Równie dobrze mogłem formatowanie wyrzucić po prostu do osobnej pętli a zostawić tylko tworzenie zapisu drużyn w kolejce, co u mnie jest kluczem o nazwie 'order'. Nie musiałem tworzyć klucza 'round', gdyż on na tym etapie jest tylko po to, by pokazać spasowanie drużyn w meczu.
A na przyszłość
MYŚLEĆ, skoro macie praktycznie gotowce na forum!!