今回は、犬の名前ランキングの
TOP10の名前の犬に
出会えるまで帰れないロケの
検証シミュレーションです。


解説動画はこちら


 
動画作ってた時は思い出せなかったですが
「スクール革命」という番組で
芸人の「ちゃんぴょんず」が
このロケをしてました。

犬の名前ランキング
トップ10の犬に全部出会うというロケです。

街を歩く犬を散歩している人に声をかけて
何匹出会ったら、全部出会えるのか
プログラムで検証してみましょう。


犬の名前ランキング

まずは犬の名前ランキングです

毎年アンケート調査されている様で
そこのデータを引用します。

import pandas as pd
import numpy as np

df = pd.read_html("https://www.anicom-sompo.co.jp/news-release/2023/20231019/")[0]
df

順位 名前 頭数
0 1位(1) ムギ 1264
1 2位(2) ココ 1091
2 3位(4) ソラ 812
3 4位(3) モカ 786
4 5位(5) マロン 732
5 6位(6) レオ 714
6 7位(8) モコ 676
7 8位(13) ラテ 642
8 9位(7) モモ 641
9 10位(12) チョコ 631


犬の名前ランキングは
こんな感じになっている様です。


シミュレーション

犬は全体で何頭いるか不明なので
TOP10が全体の20%だと仮定します。

まずはこのTOP10をデータ化します。
top_data = []
for i, row in df[["名前","頭数"]].iterrows():
    name = row["名前"]
    num = row["頭数"]
    top_data += [name] * num

print(len(top_data))
7989

残りの80%はハズレですね。
top_num = df["頭数"].sum()
h_num = top_num * 4
h_data = ["ハズレ"] * h_num
print(len(h_data))
31956

data = top_data + h_data
print(len(data))
39945


全体で4万頭ほどのデータになります。

ランダムでシャッフルしてあげると
こんな感じのデータになります。
tmp = data.copy()
np.random.shuffle(tmp)
print(tmp[0:10])
['ハズレ', 'ハズレ', 'ムギ', 'モモ', 'ハズレ', 'ハズレ', 'ムギ', 'ハズレ', 'ハズレ', 'ハズレ']


あとはTOP10の名前に
全部出会えるまで会うだけです。

シミュレーションするプログラムは
こんな感じです。
res = {n:0 for n in df["名前"].values}
count = 0
for name in tmp:
    count+=1
    if "ハズレ"!=name:
        res[name]+=1
        # TOP10全部会ってるか判定
        if all([t>0 for t in res.values()]):
            break
print(count)
210

あとは1回の試行では結果がばらつくので
1万回ほど試行してあげれば
どれくらいの回数で見つかるのかが
分かるはずです。

# 回数チェック関数
def check_count(tmp):
    res = {n:0 for n in df["名前"].values}
    count = 0
    for name in tmp:
        count+=1
        if "ハズレ"!=name:
            res[name]+=1
            # TOP10全部会ってるか判定
            if all([t>0 for t in res.values()]):
                break
    return count

calc_data = []
for i in range(10000):
    tmp = data.copy()
    np.random.shuffle(tmp)
    c = check_count(tmp)
    calc_data.append(c)

calc_df = pd.DataFrame(calc_data,columns=["count"])
calc_df.hist(bins=100)
output_23_1


結果はこんな感じになりました。

大体平均160回くらいで
出会いきれる事になりそうです。

運が良いと数十頭
運が悪いと数百頭

そんな結果でした。

このように、テレビのロケであっても
おおよそのシミュレーションが出来るので

事前にシミュレーションしておくと
諸々の調整がスムーズに行く気がします。

プログラミングでの効率化が
オススメです!!!!

今回はテレビ番組の
ロケをシミュレーションしてみました。

それでは。