ការស្លាប់ត្រូវបានដេញ

\(5\) ចំនួនស្មើៗគ្នានាំអោយមានល្បិចមួយ។ ទោះជាយ៉ាងណាក៏ដោយ ភាពទំនងនេះអាស្រ័យលើអ្វីដែលអ្នករាប់ថាជាការសាកល្បង៖ គ្រាប់ឡុកឡាក់មួយគ្រាប់ \(5\) ឬវេនពេញលេញដែលអ្នកបន្តគ្រាប់ឡុកឡាក់ដែលត្រូវគ្នា ហើយរមៀលពួកវាឡើងវិញរហូតដល់ \(2\) ដង។ នៅទីនេះយើងប្រើគ្រាប់ឡុកឡាក់ត្រឹមត្រូវជាមួយលេខ \(5\) \(1\) ទៅ \(6\) និងលទ្ធផលឯករាជ្យ។ រាល់ល្បិចទាំងអស់រាប់ថាជាជោគជ័យ; ប្រូបាប៊ីលីតេដែលអ្នកកំពុងស្វែងរកមិនត្រូវបានកំណត់ចំពោះចំនួនជាក់លាក់នៃចំណុចដូចជា \(6\) នោះទេ។


យោងតាម ការណែនាំហ្គេម អ្នកអាចសម្រេចចិត្តម្តងទៀត មុនពេលដែលគ្រាប់ឡុកឡាក់នីមួយៗត្រូវបានទុកចោល។ គោលដៅតែមួយគត់របស់យើងគឺល្បិចមួយចំនួន មិនមែនជាពិន្ទុសរុបដ៏ល្អបំផុតនៅក្នុងហ្គេមនោះទេ។ រមៀលតែមួយមាន \(6^5=7776\) ទំនងជាលទ្ធផលស្មើគ្នានៅពេលបែងចែកគ្រាប់ឡុកឡាក់។ ក្នុងចំណោមលេខទាំងនេះ \(6\) បង្ហាញលេខដូចគ្នានៅលើគ្រាប់ឡុកឡាក់ទាំងអស់។ ដូច្នេះ ឱកាសគឺ \(\frac{6}{7776}=\frac{1}{1296}\) ។ ដរាបណាល្បិចត្រូវបានឈានដល់ អ្នកបញ្ចប់ការផ្លាស់ប្តូរ។ សរុបមក ការបោះអតិបរមានៃ \(3\) ត្រូវបានអនុញ្ញាត។

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

យុទ្ធសាស្ត្រមិនសំខាន់បំផុតក៏ល្អបំផុតដែរ៖ ប្រសិនបើអ្នកចង់បង្កើនឱកាស អ្នករក្សាក្រុមធំបំផុតនៃលេខដូចគ្នាបេះបិទ។ លេខគោលដៅក៏អាចផ្លាស់ប្តូរផងដែរ៖ ពី \((2,2,3,4,5)\) ដំបូងអ្នករក្សាលេខទាំងពីរ \(2\) ។ ប្រសិនបើការវិលបន្ទាប់ផ្តល់ \((6,6,6)\) អ្នករក្សាក្រុមនេះ ហើយរមៀលទាំងពីរឡើងវិញ \(2\) ។ ឱកាសចុងក្រោយកើនឡើងពី \(\frac{1}{216}\) ទៅ \(\frac{1}{36}\) ។ ហើយជាចុងក្រោយ ឧបមាថា៖ ល្បែងមួយចប់ភាគភ្លាមៗ។ ការទុកដាក់សំរាមបន្ថែមទៀតត្រូវបានលុបចោល។

មធ្យោបាយងាយស្រួលបំផុតដើម្បីធ្វើការគណនាគឺត្រូវចាប់ផ្តើមជាមួយនឹងការបោះចុងក្រោយ។ ប្រសិនបើ \(4\) នៃគ្រាប់ឡុកឡាក់ដូចគ្នាមានរួចហើយ មានតែគ្រាប់ឡុកឡាក់ដែលនៅសល់ត្រូវឆ្លងកាត់៖ ឱកាសគឺ \(\frac{1}{6}\) ។ ប្រសិនបើ \(3\) ជាគ្រាប់ឡុកឡាក់ដូចគ្នា ពីរផ្សេងទៀតត្រូវបង្ហាញលេខដែលកាន់។ ដោយសារតែលទ្ធផលរបស់ពួកគេគឺឯករាជ្យ គុណឱកាស និងទទួលបាន \(\frac{1}{6}\cdot\frac{1}{6}=\frac{1}{36}\) ។ ម្យ៉ាងវិញទៀត ប្រសិនបើអ្នកកាន់លេខផ្សេងគ្នាក្នុងពេលតែមួយ វាមិនមានបញ្ហាជាមួយនឹងការបោះចុងក្រោយនោះទេ។ ដូច្នេះវាមិនមែនគ្រាន់តែជាលេខដែលសំខាន់នោះទេ ប៉ុន្តែក៏ជាអ្វីដែលអ្នករក្សាផងដែរ។

ជាមួយនឹង \(2\) វិលជុំដែលនៅសល់ អ្នកស្លាប់ដែលបាត់នីមួយៗទទួលបានឱកាសមួយទៀត។ ប្រសិនបើគ្រាប់ឡុកឡាក់ \(4\) ដូចគ្នា ការវាយគ្រាប់ឡុកឡាក់ដែលនៅសល់គឺគ្រប់គ្រាន់ហើយ។ ការគណនាបញ្ជរគឺខ្លីជាងនៅទីនេះ៖ គាត់ខកខានចំនួនគោលដៅនៅក្នុងការព្យាយាមទាំងពីរជាមួយនឹងប្រូបាប៊ីលីតេ \(\frac{5}{6}\cdot\frac{5}{6}=\frac{25}{36}\) ។ ដូច្នេះ ឱកាសនៃភាពជោគជ័យគឺ \(1-\frac{25}{36}=\frac{11}{36}\) ។ សម្រាប់ក្រុមតូចៗ អ្នករាប់លទ្ធផលដែលអាចកើតមាននៃការបោះ និងអនុញ្ញាតឱ្យផ្លាស់ប្តូរគោលដៅ។ ឱកាសខាងក្រោមកើតឡើងជាមួយនឹងជម្រើសដ៏ល្អបំផុតនៃការឈប់:

ក្រុមធំបំផុតលទ្ធផលនៅក្នុង \(1.\) ការទុកដាក់សំរាមឱកាសជាមួយ \(2\) វិលដែលនៅសល់
\(1\)\(720\)\(\frac{221}{17496}\)
\(2\)\(5400\)\(\frac{113}{3888}\)
\(3\)\(1500\)\(\frac{121}{1296}\)
\(4\)\(150\)\(\frac{11}{36}\)
\(5\)\(6\)\(1\)

បន្ទាត់មិនកើតឡើងជាមួយប្រេកង់ដូចគ្នាទេ។ ឧទាហរណ៍ ក្រុមធំបំផុតនៃគ្រាប់ឡុកឡាក់ \(2\) ត្រូវបានបង្កើតក្នុង \(5400\) នៃ \(7776\) ការបោះដំបូងដែលអាចធ្វើបាន។ ទាំងនេះរួមបញ្ចូលគូតែមួយ និង \(2\) គូ; ប្រសិនបើមានចំណងមួយ អ្នកជ្រើសរើសមួយក្នុងចំណោមពួកគេ។ យើងគុណឱកាសនីមួយៗនៅខាងស្តាំដោយលេខនៅកណ្តាល ហើយចែកផលបូកដោយ \(7776\) ។ វាត្រឡប់ \(p_3\) ; សម្រាប់ \(p_2\) អ្នកគ្រាន់តែប្រើការបោះដែលនៅសល់។ តម្លៃខាងក្រោមអនុវត្តមុនពេលបោះដំបូងជាមួយនឹងជម្រើសបញ្ឈប់ដ៏ល្អប្រសើរ៖ \(p_2\) សម្រាប់អតិបរមានៃ \(2\) និង \(p_3\) សម្រាប់ការបោះអតិបរមា \(3\):

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

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

ថាតើការរក្សាក្រុមធំជាងគេគឺពិតជាល្អបំផុត អាចត្រូវបានសាកល្បងយ៉ាងពេញលេញ។ ស្គ្រីប PHP ខាងក្រោមពិចារណាគ្រប់ជម្រើសដែលអាចធ្វើបាន រួមទាំងលេខចម្រុះ ឬមិនមានគ្រាប់ឡុកឡាក់ទេ។ វាចាប់ផ្តើមនៅចុងបញ្ចប់នៃវេន បន្ទាប់មកគណនាការសម្រេចចិត្តដ៏ល្អបំផុតសម្រាប់ \(1\) និង \(2\) វិលដែលនៅសល់ ហើយចុងក្រោយជាមធ្យមលើសពីការវិលជុំទីមួយ។ គំរូដូចគ្នាត្រូវបានប្រើឡើងវិញដើម្បីរក្សាវិក័យប័ត្រតូច។ ការប្រៀបធៀបទាំងអស់ត្រូវបានធ្វើឡើងដោយចំនួនគត់; មានតែការបង្ហាញភាគរយប៉ុណ្ណោះដែលត្រូវបានបង្គត់:

<?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);

នៅជុំវិញ \(4{,}60\%\) មានន័យថា៖ ទោះបីជាមានជម្រើសដ៏ល្អបំផុតក៏ដោយ ក៏បញ្ហានៅតែកម្រ។ ប្រសិនបើអ្នកបង្វិលអ្វីៗគ្រប់យ៉ាងឡើងវិញរាល់ពេល ឱកាសលើសពីការប៉ុនប៉ង \(3\) គឺប្រហែលត្រឹមតែ \(0{,}23130\%\) ប៉ុណ្ណោះ។ ប្រសិនបើអ្នកបន្តគ្រាប់ឡុកឡាក់ដែលត្រូវគ្នា ប៉ុន្តែនៅជាប់នឹងលេខគោលដៅដែលបានជ្រើសរើសបន្ទាប់ពីការវិលជុំ \(1.\) អ្នកនឹងសម្រេចបានប្រហែល \(4{,}52941\%\) ។ ការប្តូរទៅក្រុមធំជាងនេះ នាំមកនូវអត្ថប្រយោជន៍បន្ថែមតូចមួយ។ ដោយមិនគិតពីថាតើវាជាយុទ្ធសាស្រ្តគណិតវិទ្យា ឬអារម្មណ៍វៀនសុទ្ធទេ៖ Kniffel គឺជាហ្គេមកម្សាន្តដែលមិនចេះចប់មិនចេះហើយ ហើយសំខាន់ជាងនេះទៅទៀតគឺហ្គេមក្តារដ៏គួរឱ្យរីករាយ។

ថយក្រោយ