3v4l.org

run code in 300+ PHP versions simultaneously
<?php // 合計12種類あるガチャで、まわした回数に対して全種類コンプリートできている確率 // の表を作る // 少なくとも12回は回さないとコンプリートはできないので、 // スタートを12にする for ($i = (0 + 12); $i < (100 + 12); $i++) { /* * | 回すの何回目? | 引いて良いターゲットの種類 | * | --- | --- | * | 1 | 12 | * | 2 | 11 | * | 3 | 10 | * | .. | .. | // 最初の12回は、 12 - n + 1 で良いようだ * | 12 | 1 | // この時点でコンプリート * | 13 | 12 | * | 14 | 12 | */ $targetsCount = gmp_mul( // 引いて良いターゲットの集合の要素数 & 万分率 gmp_mul( // 引いて良いターゲットの集合の要素数 gmp_fact(12), // 12回目までの分 gmp_pow(12, $i - 12) // 13回目以降の分 ), gmp_init("10000") // 万分率にするため ); $sumCount = gmp_pow(12, $i); // 分母。 12 ** $i echo sprintf('%03d 回目', $i) . "\t" . gmp_div_q( gmp_mul($targetsCount, gmp_init($i)) // 組み合わせなので。 , $sumCount ) .PHP_EOL; }

preferences:
55.66 ms | 402 KiB | 5 Q