今回は、犬の名前ランキングの
TOP10の名前の犬に
出会えるまで帰れないロケの
検証シミュレーションです。
解説動画はこちら
動画作ってた時は思い出せなかったですが
「スクール革命」という番組で
芸人の「ちゃんぴょんず」が
このロケをしてました。
犬の名前ランキング
トップ10の犬に全部出会うというロケです。
街を歩く犬を散歩している人に声をかけて
何匹出会ったら、全部出会えるのか
プログラムで検証してみましょう。
犬の名前ランキング
まずは犬の名前ランキングです
毎年アンケート調査されている様で
そこのデータを引用します。
犬の名前ランキングは
こんな感じになっている様です。
シミュレーション
犬は全体で何頭いるか不明なので
TOP10が全体の20%だと仮定します。
まずはこのTOP10をデータ化します。
残りの80%はハズレですね。
全体で4万頭ほどのデータになります。
ランダムでシャッフルしてあげると
こんな感じのデータになります。
あとはTOP10の名前に
全部出会えるまで会うだけです。
シミュレーションするプログラムは
こんな感じです。
あとは1回の試行では結果がばらつくので
1万回ほど試行してあげれば
どれくらいの回数で見つかるのかが
分かるはずです。

結果はこんな感じになりました。
大体平均160回くらいで
出会いきれる事になりそうです。
運が良いと数十頭
運が悪いと数百頭
そんな結果でした。
このように、テレビのロケであっても
おおよそのシミュレーションが出来るので
事前にシミュレーションしておくと
諸々の調整がスムーズに行く気がします。
プログラミングでの効率化が
オススメです!!!!
今回はテレビ番組の
ロケをシミュレーションしてみました。
それでは。
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)

結果はこんな感じになりました。
大体平均160回くらいで
出会いきれる事になりそうです。
運が良いと数十頭
運が悪いと数百頭
そんな結果でした。
このように、テレビのロケであっても
おおよそのシミュレーションが出来るので
事前にシミュレーションしておくと
諸々の調整がスムーズに行く気がします。
プログラミングでの効率化が
オススメです!!!!
今回はテレビ番組の
ロケをシミュレーションしてみました。
それでは。
コメントする