Dadu dilemparkan

\(5\) angka yang sama menghasilkan sebuah trik. Namun, seberapa besar kemungkinan hal ini terjadi bergantung pada apa yang Anda hitung sebagai percobaan: satu lemparan \(5\) dadu atau satu putaran penuh di mana Anda terus mencocokkan dadu dan melemparnya kembali hingga \(2\) kali. Di sini kita menggunakan \(5\) dadu adil dengan angka \(1\) hingga \(6\) dan hasil independen. Setiap trik dianggap sukses; probabilitas yang Anda cari tidak terbatas pada jumlah poin tertentu seperti \(6\) .


Menurut instruksi permainan , Anda dapat memutuskan lagi sebelum setiap pelemparan tambahan dadu mana yang tersisa. Satu-satunya tujuan kami adalah semacam trik, bukan skor keseluruhan terbaik dalam sebuah pertandingan. Sebuah lemparan tunggal memiliki \(6^5=7776\) hasil yang sama ketika membedakan dadu. Dari jumlah tersebut \(6\) menunjukkan angka yang sama pada semua dadu. Jadi peluangnya adalah \(\frac{6}{7776}=\frac{1}{1296}\) . Segera setelah suatu trik tercapai, Anda mengakhiri gerakannya; Secara total, maksimal \(3\) lemparan diperbolehkan.

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

Strategi yang paling sepele juga merupakan yang terbaik: jika Anda ingin memaksimalkan peluang, pertahankan kelompok terbesar yang berisi angka-angka identik. Jumlah target juga dapat berubah: Dari \((2,2,3,4,5)\) pertama-tama Anda menyimpan keduanya \(2\) . Jika lemparan berikutnya berhasil \((6,6,6)\) , Anda tetap mempertahankan grup ini dan memutar ulang keduanya \(2\) . Peluang terakhir meningkat dari \(\frac{1}{216}\) menjadi \(\frac{1}{36}\) . Dan yang tak kalah pentingnya, mari kita asumsikan: Sebuah gimmick mengakhiri episode dengan segera; tandu selanjutnya dihilangkan.

Cara termudah untuk melakukan perhitungan adalah memulai dengan lemparan terakhir. Jika \(4\) dari dadu yang sama sudah tersedia, hanya sisa dadu yang harus lolos: peluangnya adalah \(\frac{1}{6}\) . Jika \(3\) adalah dadu yang sama, dua dadu lainnya harus menunjukkan nomor yang dipegang. Karena hasilnya independen, kalikan peluangnya dan dapatkan \(\frac{1}{6}\cdot\frac{1}{6}=\frac{1}{36}\) . Sebaliknya, jika Anda memegang nomor yang berbeda secara bersamaan, tidak akan ada masalah pada lemparan terakhir. Jadi yang penting bukan hanya jumlahnya, tapi juga apa yang Anda simpan.

Dengan \(2\) pelemparan yang tersisa, setiap dadu yang hilang mendapat peluang lain. Jika \(4\) dadu sama, satu pukulan dengan sisa dadu sudah cukup. Penghitungan penghitungnya lebih singkat di sini: Dia meleset dari angka target di kedua percobaan dengan probabilitas \(\frac{5}{6}\cdot\frac{5}{6}=\frac{25}{36}\) . Oleh karena itu, peluang suksesnya adalah \(1-\frac{25}{36}=\frac{11}{36}\) . Untuk kelompok yang lebih kecil, semua kemungkinan akibat lemparan dihitung dan target dapat diubah. Peluang berikut muncul dengan pilihan perhentian terbaik:

Kelompok terbesarMenghasilkan sampah \(1.\)Peluang dengan \(2\) sisa gulungan
\(1\)\(720\)\(\frac{221}{17496}\)
\(2\)\(5400\)\(\frac{113}{3888}\)
\(3\)\(1500\)\(\frac{121}{1296}\)
\(4\)\(150\)\(\frac{11}{36}\)
\(5\)\(6\)\(1\)

Garis-garis tersebut tidak muncul dengan frekuensi yang sama. Misalnya, kelompok dadu \(2\) terbesar dibuat di \(5400\) dari \(7776\) kemungkinan lemparan pertama. Ini termasuk pasangan tunggal dan pasangan \(2\) ; Jika ada seri, Anda memilih salah satunya. Kita mengalikan setiap peluang di sebelah kanan dengan angka di tengah dan membagi jumlahnya dengan \(7776\) . Ini mengembalikan \(p_3\) ; untuk \(p_2\) anda hanya menggunakan sisa lemparan saja. Nilai berikut berlaku sebelum lemparan pertama dengan pilihan penghentian optimal: \(p_2\) untuk lemparan maksimum \(2\) dan \(p_3\) untuk lemparan maksimum \(3\):

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

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

Apakah mempertahankan kelompok terbesar adalah yang terbaik dapat diuji sepenuhnya. Skrip PHP berikut mempertimbangkan setiap pilihan yang mungkin, termasuk nomor campuran atau tidak ada dadu yang diadakan sama sekali. Ini dimulai pada akhir giliran, kemudian menghitung keputusan terbaik untuk \(1\) dan \(2\) gulungan yang tersisa dan akhirnya membuat rata-rata pada putaran pertama. Pola yang sama digunakan kembali untuk menjaga agar tagihan tetap kecil. Semua perbandingan dibuat dengan bilangan bulat; hanya tampilan persentase yang dibulatkan:

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

Sekitar \(4{,}60\%\) berarti: Bahkan dengan pilihan terbaik, masalah tetap jarang terjadi. Jika Anda memutar ulang semuanya setiap saat, peluang maksimum \(3\) upaya hanya sekitar \(0{,}23130\%\) . Jika Anda tetap mencocokkan dadu, namun tetap pada nomor target yang dipilih setelah pelemparan \(1.\) , Anda akan mencapai sekitar \(4{,}52941\%\) . Oleh karena itu, beralih ke kelompok yang lebih besar membawa sedikit keuntungan tambahan. Terlepas dari apakah itu strategi matematika atau firasat murni: Kniffel adalah permainan papan yang tak lekang oleh waktu, menghibur, dan yang terpenting, permainan papan yang menghibur.

Kembali