Скрипт Жеребьевки
Добрый день, уважаемые программеры.
Я в этом деле начинающий поэтому прошу у вас помощи. Итак хочу создать автоматическую жеребьевку команд. В принципе как сгенерировать выпадение команд понятно, но как создать скажем два условия при генерации рандома: 1. что бы одна и таже команда не выпала дважды (т.е исключить ее выпадение дважды) 2. условие по географии, т.е. скажем что бы клуб из Англии не попал на клуб из Англии. Буду благодарен любым идеям. П.с. скажем команд будет 32, т.е. генерация от 1 до 32, каждому числу присвоено свое название клубы. Теперь как создать два условия выше сказанные... |
SergMU,
массив команд можно? |
кусочек из 4-х клубов
<?php $club[0]="Реал"; $club[1]="Барселона"; $club[2]="Бавария"; $club[3]="Манчестер"; ?> вот реал на барсу не должен попасть, из одной страны |
SergMU,
страна - количество команд -- плиз |
Жеребьёвка команд
Вариант :write:
<!DOCTYPE HTML> <html> <head> <title>Untitled</title> <meta charset="utf-8"> </head> <body> <script> function d(b) { for (var a = b.length - 1; 0 < a; a--) { var c = Math.floor(Math.random() * (a + 1)), d = b[c];b[c] = b[a];b[a] = d } return b} var country = 4, clubs = 8, arr = [], rundCountry = []; for (var i=0; i<country; i++) { rundCountry[i] = [i]; var c = arr[i] = []; for (var k=0; k<clubs; k++) { c[k] = k } } var n = 0; for (var i=0; i < clubs; i++) { rundCountry = d(rundCountry); for (var k=0; k<country; k++) { var a = rundCountry[k]; var c = Math.floor(Math.random() * (arr[a].length)); c = arr[a].splice(c,1); !(k % 2) && document.write(++n +" игра (страна-клуб этой страны) <br>"); document.write(a+"-"+c+"<br>"); } } </script> </body> </html> |
спасибо, завтра попробую запустить ;)
|
Цитата:
Смотрите есть допустим 4 клуба, мне их нужно разместить в две группы по две команды. Т.е. нажимаю кнопку запустить - выпадает какая то команда и т.д. Принцип: Клубы - Реал (Испания), Бавария (Германия), Барселона (Испания), МЮ (Англия). Теперь нужно запустить так чтобы Реал и Барселона не попали в одну группу, т.к. они обе из ИСПАНИИ, т.е. два клуба должны быть в разных группах. Идет жеребьевка, нажимаю ЗАПУСТИТЬ - выпадает рендомно число, скажем 3, которое у меня из массива прочитает что под цифрой 3 присвоен РЕАЛ. Поместил в одну группу, далее опять жму ЗАПУСТИТЬ (и здесь нужно чтобы число которое уже выпало, в нашем случае 3 - больше не выпадало) - т.е. мне нужно что бы теперь выпало 1 или 2 или 4. Ну и т.д. |
SergMU,
смотрите пост 4 - нет данных нет кода код ниже не решает задачу - просто генерит рандом для данного случая. 32 команды у вас превратились в 4 ... <!DOCTYPE HTML> <html> <head> <title>Untitled</title> <meta charset="utf-8"> </head> <body> <script> function d(b) { for (var a = b.length - 1; 0 < a; a--) { var c = Math.floor(Math.random() * (a + 1)), d = b[c];b[c] = b[a];b[a] = d } return b} var country = 2, clubs = 2, arr = [['Реал (Испания)','Барселона (Испания)'],['Бавария (Германия)','МЮ (Англия)']], rundCountry = [0,1]; var n = 0; for (var i=0; i < clubs; i++) { rundCountry = d(rundCountry); for (var k=0; k<country; k++) { var a = rundCountry[k]; var c = Math.floor(Math.random() * (arr[a].length)); c = arr[a].splice(c,1); !(k % 2) && document.write(++n +" игра<br>"); document.write(c+"<br>"); } } </script> </body> </html> |
спасибо за идеи ;)
|
Часовой пояс GMT +3, время: 03:05. |