出てきやすいパターン


この問題、なんとなく「10」でも「11」でも平均でみたら同じになりそうな気がしてしまいます。
せっかくなのでJavaScriptで計算実験してみました。

// コインを投げる
function tossCoin() {
  return Math.round(Math.random(), 1);
}

// パターンが出るまでコインを投げる
function tossUntil(pattern) {
  let r = '';
  do {
    r += tossCoin();
  } while (r.lastIndexOf(pattern) === -1);
  return r;
}

// n回試行して結果を配列に詰める
function genData(n, pattern) {
  const array = [];
  for (let i = 0; i < n; i++) {
    array.push(tossUntil(pattern).length)
  }
  return array;
}

// 平均を計算する
function average(array) {
  return array.reduce((x, y) => x + y, 0) / array.length;
}

// テストを実行する
function runTest() {
  const n = 10000;
  const E10 = average(genData(n, '10'));
  const E11 = average(genData(n, '11'));
  alert(`E(N10) = ${E10}\nE(N11) = ${E11}`);
}

runTest();

結果は次のようになりました。

E(N10) = 4.146
E(N11) = 6.039

なんとなく「10」は4回、「11」は6回に収束していきそうな感じがします。

以下のリンクを押すとお使いのブラウザから試せます。

Run Test

問題の出典は以下の本です。解法が気になる場合は読んでみてください。