Autor Zpráva
Klobás
Profil *
Ahoj,

rád bych poprosil znalé, zda by nepomohli vymyslet následující:

1)
Mám seznam týmů (je jedno kolik) a u každého týmu znám jeho sílu (je jedno jestli je síla vyjádřena v % od 0 - 100 nebo je sílá týmu od 1 - 10).

Rád bych nějak simuloval výsledek mezi týmy. Potřebuji do toho zahrnout:
náhodu
(výhodu, domácí bude hrát ve velké většine případů lépe doma než venku)
sílu týmu
případně cokoli dalšího co vás napadne.

Pár ukázkových zápasů:

Brazílie - Indie (Brazílie je top tým, Indie naopak), možné výsledky: 5:0, 4:0, 9:0 (občas i tolik gólů padne); 6:0; 4:1 (občas i looser dá gól).

Češi - Slováci (šance tak 55:45); 0:0, 1:0, 3:0, 0:2, 1:1, 2:0, 0:1, 5:0, 0:0, 1:2

atd.

Výsledky typu 5:5, 8:3 padají velmi málo, stejně tak jako dvouciferné nebo velmi vysoké (od cca 6 branek na tým nahoru) občas a spíše jen když se hraje s velmi slabými týmy.

2) Jak nejlépe generovat průběh zápasu (branky, karty akce, tj něco jako umělou inteligenci)

Zhlédl jsem se ve fotbalových manažerech typu www.mifa.cz, www.brejk.cz, www.hattrick.org

Chtěl jsem si udělat jednodušší manažer pro sebe a několik kamarádů (umím vytvořit vazby, tabulky, výpisy, tabulky, a celkově to naprogramovat aby se to dalo ovládat, ale ty složité algoritmy na generování výsledků, zápasů atd už nezvládám :( (což je celkem problém, proto kdybyste mě někdo popostrčil nebo mi pomohl nějakým příkladem či něčím co mne dostane o kousel dál, budu velmi vděčen.


3) Kde vzít seznamy jmen různých národností (Potřebuji vygenerovat tisíce různých jmen třeba z Itálie, Anglie, Moldavska atd .. je mi jasné že to bude kombinací jména a příjmení dané národnosti, ale kde vzít ty "číselníky"?


Díky moc.
Klobás
Profil *
Nikdo nic?

č. 1 stále mě nic nenapadlo, nenapadne někoho nějaká jednodušší formulka?
č. 2 moc složité (už to ani nechci)
č. 3 vyřešeno na Githubu
tttt
Profil *
1) Počet vstřelených gólů bude plus minus odpovídat Poissonovu rozdělení, viz en.wikipedia.org/wiki/Poisson_distribution#Generating_Poisson-distributed_random_variables. Spočítej pro tým hodnotu lambda, ta odpovídá průměrnému počtu gólů, který tým s daným soupeřem vstřelí. Může to být třeba rozdíl síly týmů (případně 1, kdyby vyšel záporný). Když bude tým hrát venku, odečti třeba 0,5. Štelovat lze dle libosti. A pak pro danou lambdu vygeneruj počet gólů pomocí Poissonova rozdělení. Pseudokód je na wiki, níž je příklad v Javě:

public static int getPoisson(double lambda) {
  double L = Math.exp(-lambda);
  double p = 1.0;
  int k = 0;

  do {
    k++;
    p *= Math.random();
  } while (p > L);

  return k - 1;
}

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0