Zdravím, chci si udělat takovou kalkulačku pravděpodobnosti, jenže jsem se trochu zasekl nad tím, že zde mám určité mezery. Dotaz se týká především variací a kombinací. Tak tedy, na variacích je strašně svazující, že to prostě musí být nějaká posloupnost po sobě jdoucích celých čísel, ze kterých se vybírá. Lze to však pojmout i logicky tak, že mám určité množství slotů (např. 5) a do každého zapíši, kolik hodnot sem lze osadit, tato čísla mezi sebou vynásobím a mám celkový počet variací. Pokud dosadím do vzorce nebo použiji svoji logickou metodu, tak vždy vyjde stejné číslo. Díky tomu mohu dělat s variacemi "psí kusy" a do každého slotu si osazovat počet možností dle vlastní potřeby, používat i desetinná čísla, a tak můžu vypočítat všechno přesně a bez nějakých kompromisů, které jsem zmiňoval. Souhlasíte se mnou, je moje úvaha správná?
No ale problém nastal v případě, že jsem podobné věci chtěl dělat i s kombinacemi. Postup stejný jako u variací, jen jsem výsledek vždy vydělil počtem slotů faktoriál. Ano, zprvu se to zdálo správně (v případě posloupností), ale pokud jsem si začal dosazovat čísla dle vlastní potřeby, tak mi vycházely úplné nesmysly, čehož jsem si všiml až když jsem narazil na kombinace s opakováním. C'5(7) (převedu => C5(11)) = 462 a když jsem to udělal dle logiky 7*7*7*7*7/5! tak vyjde 140.
- Potřeboval bych tedy pomoct, jak mám zacházet s kombinacemi tak, abych si do slotů mohl dosadit cokoliv, co potřebuji, a přitom se dobral ke správnému výsledku. Předem děkuji za jakoukoliv pomoc!
Offline
↑ Donald:
Ten postupný výpočet např.
je v pořádku, a také přesně odpovídá tomu vzorci, který je v učebnicích, tj
. A ano, ke kombinacím se dostaneš vydělením tohoto čísla počtem možností, kolika jde ty vybrané prvky mezi sebou přeházet. Což je opět v souladu se vzorečkem z učebnice:
.
Nerozumím těm tvým psím kusům, ani co znamená "že to prostě musí být nějaká posloupnost po sobě jdoucích celých čísel, ze kterých se vybírá". Ani úvahám o tom, jak tam (kam?) budeš dosazovat desetinná čísla. To bych asi musel vidět na příkladu.
Proč to dělení nefunguje u kombinací s opakováním. No, nejdřív proč fungovalo u kombinací bez opakování. Fungovalo proto, že u variací bez opakování bylo jasné, že žádný prvek se neopakuje. Takže kdyby sis vypsal všechny možné variace, nakonec bys zjistil, že všechny možnosti, které mají stejné prvky se v tom seznamu vyskytují symetricky. Jinými slovy, skutečně každou kombinaci bez opakování v tom seznamu najdeš právě k!-krát. Např vybíráme z písmen A,B,C dvojice. Vypíšu variace(3,2) bez opakování: AB,AC,BA,BC,CA,CB. Je jich tedy šest=3*2. Přitom je vidět, že každá dvojice je tam dvakrát, jen v opačném pořadí. Vydělím to dvěma a hotovo, dostanu 3.
No jo, a teď s opakováním: AA,AB,AC,BA,BB,BC,CA,CB,CC. Je jich tedy 9 (což je
). Ale tím, že prvky se mohly opakovat už teď neplatí, že by tam každá dvojice byla dvakrát. Dvojice se stejným písmenem (které tam předtím nebyly) jsou tam jen jednou. Výsledek je 6 unikátních dvojic. Samozřejmě až budeme vybírat více než 2 prvky, bude v tom větší zmatek. Ale bude vždy platit, že čím více se při stavbě dané možnosti využilo to opakování, tím méně je počet nadhodnocený. Proto nejde prostě dělit číslem k!.
Opět nerozumím tomu, co jsou čísla dle vlastní potřeby, ani jaká čísla jsi tam dosazoval před nimi. Ale nemusím rozumět všemu.
Edit: teď jsem to po sobě přečetl, a nejsem si úplně jistý, jak je to srozumitelné. Správně to ale snad je.
Offline
U opakování máš chybu, protože těch možností není 8, ale 9 - tedy 3^{2}, asi jsi to jen omylem otočil (2 sloty a do každého lze vložit 3 prvky: 3*3). Jinak už tedy chápu, proč to to nelze dělit k! a děkuji za reakci, ovšem ve výsledku jsem stále tam, kde jsem byl. Budu tedy naprosto konkrétní, když to nelze řešit obecně.
Máš hru a ve hře máš předmět, který obsahuje 5 unikátních bonusů. Bonusy je možné protočit (všechny najednou), žádný se nemůže opakovat a vybírá se z celkového množství 17 bonusů. Kdyby záleželo na pořadí, tak si nejprve spočítám celkové množství variací:
= 742 560. Dále chci natočit nějakou svoji předem definovanou variaci, takže na na první místo chci třeba jen jeden určitý, na druhé mi stáčí 1 ze 2, na třetí také 1 ze 2, na čtvrté třeba 1 ze 3 a na páté je mi to jedno, takže:
= 156. Čísla podělím a mám výsledek: 156/742 560 = 0,00021 (0,021%).
Jenže ono právě na pořadí vůbec nezáleží, prostě jen chci, aby se tam dané bonusy objevily. Začnu tedy stejně:
= 6 188. Když však zadám stejné požadavky, jako v minulém případě 1*2*2*3*13, tak vůbec nevím, čím mám toto číslo vydělit, aby to bylo správně??? Mám tam vlastně stejné sloty jako u variací pouze s rozdílem, že na pořadí nezáleží. Přemýšlel jsem i nad tím, jak by se to dalo zapsat jinak, ale na nic jsem nepřišel. No a aby to bylo ještě složitější, tak každý bonus nabývá nějaké hodnoty a pravděpodobnost výskytu maximální hodnoty je 15%. Kdybych jich chtěl 5, tak to jsou opět naše kombinace s opakováním, jenže pro číslo 6,66 a to ještě nepočítám situace, ve kterých mám všechny hodnoty různě, třeba: 1*2*2*6,6*6,6, no a jelikož mi již od začátku na pořadí nezáleželo, tak ani zde pořadí nelze nijak zjistit, a proto na něm také svým způsobem nezáleží. Jak z toho tedy ven a jak se dostat k nějakému řešení???
- Snad jsem to napsal srozumitelně :)
Offline
↑ Donald:
Ano, omlouvám se za chybu. Původně jsem tam psal o vybírání trojic ze dvou prvků, někdy v průběhu psaní jsem to změnil, jen ne všude. Naštěstí to bylo zřejmé. Opravím to.
Vyprávění o bonusech je pro mně dost nesrozumitelné. Např. "chci natočit nějakou svoji předem definovanou variaci, takže na na první místo chci třeba jen jeden určitý, na druhé mi stáčí 1 ze 2,..."
Tak je to teda jedna konkrétní "předem definovaná variace", nebo jsou to všechny variace, které splňují ty zadané podmínky? To je totiž dost podstatný rozdíl.
Od věty "aby to bylo ještě složitější" jsem už nepochopil ani slovo. Tak jako tak mi osobně přijde, že nejrychlejší by bylo zkusit si to naprogramovat. I Excel by na to asi stačil.
Offline
Ve hře je předmět a v něm 5 unikátních bonusů (zvýrazněno). Tyto bonusy se dají všechny najednou změnit, nesmí se opakovat, nezáleží na pořadí a vždy se vybírá 5 bonusů ze 17, které jsou rozepsány v tabulce.
Z toho si vypočítám celkové množství kombinací, jak jsem již psal, zde je to asi zatím jasné. No ale abych mohl vypočítat pravděpodobnost natočení určité kombinace, tak si musím zadat podmínky, co na tom předmětu vlastně chci mít. Moje podmínka byla například na jedné pozici "obrana proti dýkám", na druhé "obrana proti mečům" nebo "obrana proti obouručním mečům", na třetí "odolnost proti šípům" nebo "Max. ZB", na čtvrtou "obrana proti vějířům" nebo "obrana proti zvonům" nebo "odolnost proti magii" a na pátou je mi to jedno, tedy cokoliv ze zbytku. Z toho vyplývaly ty mé hodnoty 1*2*2*3*13, které jsem potřeboval něčím vydělit, protože mi na pořadí nezáleží.
Pokud se podíváš na ten předmět, můžeš si všimnout, že každý bonus má svoji velikost obvykle v %, která se vždy náhodně vygeneruje - může nabývat 4 hodnot např. (6,8,10,15) na které je v tomto pořadí šance (10,40,35,15)% no a z toho pak vzešly ty moje hodnoty 15% -> 6,66, 50% (35+15, protože když bude hodnota bonusu vyšší nevadí) -> 2, nebo mi to bylo jedno tedy 100% -> 1. Z toho jsem pak udělal 1*2*2*6,66*6,66. Zde je pak otázka, zda je vůbec možné míchat kombinace(pravděpodobnost natočení bonusů) s variacemi(velikosti hodnot bonusů) nebo je to nesmysl a také se to musí předělat do kombinací a když, tak jak?
...Je to už srozumitelně napsané? Samozřejmě na to dělám program v C#, ale abych ten program mohl dodělat, tak musím vědět, jak to vypočítat.
Offline