A kocka el van dobva

\(5\) egyenlő számok trükköt eredményeznek. Ennek a valószínűsége azonban attól függ, hogy mit tekintesz próbálkozásnak: egyetlen \(5\) kockadobás vagy egy teljes kör, amelyben folyamatosan a megfelelő kockákat dobod, és legfeljebb \(2\) -szer dobod újra. Itt \(5\) fair kockát használunk \(1\) - \(6\) számokkal és független eredményekkel. Minden trükk sikernek számít; a keresett valószínűség nem korlátozódik meghatározott számú pontra, például \(6\) .


A játék utasításai szerint minden további dobás előtt újra eldöntheti, hogy melyik kockát hagyja fekve. Az egyetlen célunk egy trükk, nem a legjobb összpontszám egy meccsen. Egyetlen dobás \(6^5=7776\) ugyanolyan valószínű eredményt ad a kockák megkülönböztetésekor. Ezek közül \(6\) minden kockán ugyanazt a számot mutatja. Tehát az esély \(\frac{6}{7776}=\frac{1}{1296}\) . Amint elérik a trükköt, befejezi a lépést; Összesen legfeljebb \(3\) dobás megengedett.

$$p_1=\frac{6}{6^5}=\frac{1}{1296}\approx0{,}07716\%.$$

A legtriviálisabb stratégia is a legjobb: ha maximalizálni akarja az esélyt, akkor megtartja az azonos számok legnagyobb csoportját. A célszám is változhat: \((2,2,3,4,5)\) ből először megtartja a két \(2\) . Ha a következő dobás \((6,6,6)\) értéket adja meg, akkor megtartja ezt a csoportot, és újradobja a két \(2\) . Az utolsó esély \(\frac{1}{216}\) értékről \(\frac{1}{36}\) értékre nő. És végül, de nem utolsósorban, tegyük fel: egy trükk azonnal véget vet az epizódnak; további almokat kihagyunk.

A számítás legegyszerűbb módja az utolsó dobással kezdeni. Ha \(4\) ugyanabból a kockából már elérhető, csak a fennmaradó kockáknak kell átmenniük: az esély \(\frac{1}{6}\) . Ha \(3\) ugyanaz a kocka, akkor a másik kettőnek a birtokolt számot kell mutatnia. Mivel az eredmények függetlenek, szorozd meg az esélyeket, és kapd meg \(\frac{1}{6}\cdot\frac{1}{6}=\frac{1}{36}\) . Viszont ha egyszerre több számhoz ragaszkodsz, akkor az utolsó dobással nem lehet gond. Tehát nem csak a szám számít, hanem az is, hogy mit tartasz meg.

\(2\) hátralévő dobással minden hiányzó kocka kap még egy esélyt. Ha \(4\) kockák azonosak, elegendő egy ütés a maradék kockával. A számláló számítása itt rövidebb: mindkét kísérletben elvéti a célszámot \(\frac{5}{6}\cdot\frac{5}{6}=\frac{25}{36}\) valószínűséggel. A siker esélye tehát \(1-\frac{25}{36}=\frac{11}{36}\) . Kisebb csoportok esetén a dobások összes lehetséges következményét számolja, és lehetővé teszi a cél megváltoztatását. A legjobb megállóválasztás esetén a következő esélyek merülnek fel:

Legnagyobb csoportEredmények az \(1.\) alombanEsély \(2\) hátralévő dobással
\(1\)\(720\)\(\frac{221}{17496}\)
\(2\)\(5400\)\(\frac{113}{3888}\)
\(3\)\(1500\)\(\frac{121}{1296}\)
\(4\)\(150\)\(\frac{11}{36}\)
\(5\)\(6\)\(1\)

A vonalak nem azonos gyakorisággal fordulnak elő. Például a \(2\) dobókocka legnagyobb csoportja a \(7776\) lehetséges első dobások közül \(5400\) jön létre. Ezek közé tartozik az egyetlen pár és \(2\) pár; Ha döntetlen van, válassz egyet közülük. Minden jobb oldali esélyt megszorozunk a középen lévő számmal, és elosztjuk az összeget \(7776\) -val. Ez a következőt adja vissza \(p_3\) ; \(p_2\) esetén csak maradék dobást használsz. A következő értékek érvényesek az első dobás előtt optimális megállás választással: \(p_2\) maximum \(2\) és \(p_3\) maximum \(3\) dobás esetén:

$$p_2=\frac{221}{17496}\approx1{,}26315\%.$$

$$p_3=\frac{347897}{7558272}\approx4{,}60286425\%.$$

Teljesen tesztelhető, hogy valóban a legnagyobb csoport megtartása a legjobb-e. A következő PHP-szkript minden lehetséges választást figyelembe vesz, beleértve a vegyes számokat vagy a dobókocka hiányát is. A kör végén kezdődik, majd kiszámítja a legjobb döntéseket \(1\) és \(2\) hátralévő dobásokra, és végül átlagolja az első dobást. Ugyanazokat a mintákat használják újra, hogy a számla kicsi legyen. Minden összehasonlítás egész számokkal történik; csak a százalékos kijelzés kerekítve van:

<?php

declare(strict_types=1);

if (PHP_INT_SIZE < 8) {
    throw new RuntimeException('64-Bit-PHP erforderlich.');
}

function combinations(array $limits): array
{
    $result = [[]];
    foreach ($limits as $limit) {
        $next = [];
        foreach ($result as $prefix) {
            for ($i = 0; $i <= $limit; $i++) {
                $next[] = [...$prefix, $i];
            }
        }
        $result = $next;
    }
    return $result;
}

function outcomes(int $number): array
{
    static $cache = [];
    if (isset($cache[$number])) {
        return $cache[$number];
    }
    $result = [];
    foreach (combinations(array_fill(0, $number, value: 5)) as $dice) {
        $counts = array_fill(0, count: 6, value: 0);
        foreach ($dice as $face) {
            $counts[$face]++;
        }
        $key = implode(',', $counts);
        $result[$key] = ($result[$key] ?? 0) + 1;
    }
    return $cache[$number] = $result;
}

function pattern(array $counts): string
{
    rsort($counts);
    return implode(',', $counts);
}

$states = [];
$values = [];
foreach (outcomes(5) as $key => $count) {
    $counts = array_map('intval', explode(',', $key));
    rsort($counts);
    $states[pattern($counts)] = $counts;
    $values[pattern($counts)] = (int) ($counts[0] === 5);
}

// Gemeinsamer Nenner: 6^(5 * verbleibende Würfe).
for ($remaining = 1; $remaining <= 2; $remaining++) {
    $next = [];
    foreach ($states as $key => $counts) {
        $best = 0;
        foreach (combinations($counts) as $held) {
            $number = 5 - array_sum($held);
            $total = 0;
            foreach (outcomes($number) as $rolled => $count) {
                $after = array_map('intval', explode(',', $rolled));
                foreach ($held as $face => $amount) {
                    $after[$face] += $amount;
                }
                $total += $count * $values[pattern($after)];
            }
            $best = max($best, $total * (6 ** (5 - $number)));
        }
        $next[$key] = $best;
    }
    $values = $next;
}

$numerator = 0;
$denominator = 6 ** 15;
foreach (outcomes(5) as $key => $count) {
    $numerator += $count * $values[pattern(array_map('intval', explode(',', $key)))];
}
[$a, $b] = [$numerator, $denominator];
while ($b !== 0) {
    [$a, $b] = [$b, $a % $b];
}
echo intdiv($numerator, $a), '/', intdiv($denominator, $a), PHP_EOL;
printf("%.10f%%\n", (100 * $numerator) / $denominator);

Körülbelül \(4{,}60\%\) azt jelenti: Még a legjobb választás mellett is ritka a probléma. Ha minden alkalommal mindent újragörget, a maximális \(3\) próbálkozás esélye csak körülbelül \(0{,}23130\%\) . Ha folytatja a kockák egyezését, de ragaszkodik az \(1.\) dobás után kiválasztott célszámhoz, körülbelül \(4{,}52941\%\) értéket fog elérni. A nagyobb csoportra való váltás tehát további kis előnyt jelent. Függetlenül attól, hogy matematikai stratégiáról vagy tiszta zsigerről van szó: a Kniffel egy időtlen, szórakoztató és mindenekelőtt szórakoztató társasjáték.

Vissza