V předešlém článku jsem se věnoval tématu jak hrát tombolu profitabilně, ale bylo mi taky řečeno, že mnoho lidí tombolu hraje zkrátka jen proto, aby něco vyhráli. A o tom bude tento (snad již poslední) díl celé “tombolové série”.

Hlavní cena

Začněme rovnou tím, o čem jsem si myslel, že to bude nejsložitější, ale opak se ukázal být pravdou. Zdá se, že pravděpodobnost, že vyhrajete hlavní cenu, nezávisí na počtu cen v tombole, ale pouze na % počtu lístků, které si koupíte. Pokud si fitneme tento model:

Call:
lm(formula = pr_hlavni_cena ~ p_tvych_listku, data = math_df2)

Residuals:
      Min        1Q    Median        3Q       Max 
-0.071875 -0.011617 -0.000055  0.010434  0.082331 

Coefficients:
                 Estimate Std. Error  t value Pr(>|t|)    
(Intercept)    -0.0004600  0.0004235   -1.086    0.277    
p_tvych_listku  1.0005152  0.0007071 1415.004   <2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.01823 on 7998 degrees of freedom
Multiple R-squared:  0.996,	Adjusted R-squared:  0.996 
F-statistic: 2.002e+06 on 1 and 7998 DF,  p-value: < 2.2e-16

zjistíme, že vysvětluje 99,6% celkového rozptylu a residuals plot vypadá následovně:

Tady nám to sedí doslova jako prdel na hrnec. Takže pokud si budete chtít spočítat, jakou máte pravděpodobnost, že hlavní cena bude právě Vaše, tak vzorec je:

kde:

  • Pzl … počet lístků, které jste si koupili
  • Pl … celkový počet prodaných lístků

Například pokud bude v tombole 200 lístků a Vy si koupíte 10 z nich (za předpokladu, že se všech 200 prodalo), pak pravděpodobnost, že vyhrajete hlavní cenu je: 10 / 200 = 0,05 (tj. 5%). Zajímavé na tom je, že nezáleží na tom, kolik je v tombole cen.

Chci vyhrát alespoň něco

Zde se pouštíme do jámy lvové a přiznám se, že zde se mi nepodařilo najít vzorec, který by uspokojivě vysvětloval výsledky simulace, že člověk se svými lístky vyhraje alespoň jednu cenu. Dokonce i s Bernoulliho pokusy jsem pohořel (i když ty byly nejblíže), takže to znamená, že losování lístků v tombole je rozhodně jev závislý. Abych takový model mohl sestavit, musel bych dokonale odhalit mechaniku těchto závislostí, což už je mimo mé schopnosti.

Takže co s tím uděláme? Tam, kde nepomůžou vzorce, chopíme se grafů a tabulek! Jediné, co jsem tedy zjistil je, že pravděpodobnost alespoň jedné výhry závisí na % počtu zakoupených lístků a taky na % počtu cen v tombole (vůči počtu prodaných lístků), kde mezi těmito 2 parametry je interakce. Můžeme si to vizualizovat následovně:

Na grafu jde vidět, že s rostoucím počtem cen v tombole Vaše šance něco vyhrát dramaticky roste. A kdybyste si koupili rovnou polovinu všech lístků, tak bez ohledu na to, kolik je v tombole cen, je Vaše výhra téměř jistá. Aby se tyto data daly nějak lépe použít, vytvořme si tabulku:

% tvých lístků% počet cen (vůči lístkům)Pravděpodobnost výhry
0.050.050.384 – 0.452
0.050.10.618 – 0.69
0.050.150.786 – 0.842
0.050.20.866 – 0.922
0.050.250.922 – 0.964
0.050.30.956 – 0.988
0.050.350.98 – 0.996
0.050.40.986 – 1
0.050.450.992 – 1
0.050.50.996 – 1
0.050.550.998 – 1
0.050.60.998 – 1
0.10.050.634 – 0.696
0.10.10.866 – 0.93
0.10.150.954 – 0.982
0.10.20.984 – 0.996
0.10.250.994 – 1
0.10.30.998 – 1
0.150.050.77 – 0.844
0.150.10.96 – 0.98
0.150.150.988 – 1
0.150.20.996 – 1
0.150.250.998 – 1
0.20.050.866 – 0.92
0.20.10.988 – 0.998
0.20.150.998 – 1
0.20.20.998 – 1
0.250.050.912 – 0.972
0.250.10.992 – 1
0.30.050.964 – 0.986
0.30.10.998 – 1
0.350.050.978 – 0.996
0.350.10.998 – 1
0.40.050.986 – 0.998
0.450.050.994 – 1
0.50.050.996 – 1
0.550.050.998 – 1
0.60.050.998 – 1

Takže například pokud bude v tombole 200 lístků a 10 cen (což je 5% z celkového počtu lístků; v tabulce hodnota 0.05), pak pokud budete chtít mít alespoň 63% pravděpodobnost, že něco vyhrajete, pak si musíte koupit cca 10% lístků, což je v tomto případě 20 ks. Pokud byste si koupili lístků 2x tolik (40 ks), pak Vaše pravděpodobnost na výhru vzroste na 86-92%.

Z tabulky jsem odebral řádky, kde minimální pravděpodobnost byla 100%. Nejnižší hodnota pro počet cen je 5% a tak si nejsem úplně jistý, jestli by to nechtělo nasimulovat i pro menší počty cen vůči lístkům. Každopádně jestli to někdo někdy budete potřebovat, dejte vědět a uděláme update 🙂 .

Takže tolik k tombole a doufám, že tento článek byl již v této sérii poslední 😀 .

Vzorec nalezen! (update 31.3.2023)

Trochu se mi to v hlavě rozleželo a myslím, že se mi konečně podařilo najít uspokojivý vzorec. Pro jeho řešení jsem musel sáhnout hlouběji do znalostí kombinatoriky a výsledkem je tato rovnice:

kde:

  • Pl … počet prodaných lístků
  • Pzl … počet (tvých) zakoupených lístků
  • Pc … počet cen

Pokoušel jsem se tento vzorec i zjednodušit, což se mi sice trochu povedlo, ale při ověřování jsem skončil na tom, když mi faktoriál vrátil nekonečno 😀 . Takže tohle asi spočítáte jen s kalkulačkou, která umí kombinace. Pro praktické použití se nakonec přecijenom bude hodit víc asi ta tabulka.

Co se týká ověření vzorce, tak residuals plot vypadá následovně:

Není to úplně dokonalé, ale z mého pohledu dostačující. Přibližná chyba ±2% není až tak zlá.

Kód

spust_tombolu_2 = function(p_tvych_listku, p_zisk_tomboly, p_pocet_cen) {
  pocet_prodanych_listku = 200
  pocet_tvych_listku = (p_tvych_listku*pocet_prodanych_listku) |> round()
  
  pocet_cen = (p_pocet_cen*pocet_prodanych_listku) |> round()
  
  hodnoty_cen = rlnorm(pocet_cen,4.377245, 1.640558)
  hodnota_cen_total = sum(hodnoty_cen)
  cena_listku = (p_zisk_tomboly*hodnota_cen_total)/pocet_prodanych_listku
  
  cena_tvych_listku = pocet_tvych_listku*cena_listku
  
  listky_v_losovani = 1:pocet_prodanych_listku
  
  tve_listky = sample(listky_v_losovani, pocet_tvych_listku)
  
  vylosovate_listky = sample(listky_v_losovani, pocet_cen)
  hlavni_cena = sample(vylosovate_listky, 1)
  
  tve_vyherni_listky = intersect(vylosovate_listky, tve_listky)
  pocet_vyhernich_listku = length(tve_vyherni_listky)
  
  list (
    vyhral_neco = pocet_vyhernich_listku > 0,
    vyhral_hlavni_cenu = hlavni_cena %in% tve_vyherni_listky
  )
}