قالب ریخته می شود

\(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\%.$$

اینکه آیا حفظ بزرگترین گروه واقعا بهترین است یا خیر را می توان به طور کامل آزمایش کرد. اسکریپت پی اچ پی زیر هر انتخاب ممکنی را در نظر می گیرد، از جمله اعداد مختلط یا اصلاً تاس نگه ندارد. در پایان نوبت شروع می‌شود، سپس بهترین تصمیم‌ها را برای رول‌های باقی‌مانده \(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 یک بازی رومیزی جاودانه، سرگرم کننده و مهمتر از همه سرگرم کننده است.

بازگشت