知恵袋の同じものを含む順列の確率の問題をPythonで解いてみました。タイトルがなんか変ですが、お察しください。(^_^;
BALLOON の7文字を並べるとき、母音と子音が交互に並ぶ確率
確率の問題では見た目が同じものでも区別して考えますが、Pythonの場合、set()を使わないと同じものでも異なるものとして順列を生成するのでitertools.permutations()がそのまま使えます。
生成した順列を母音(V)と子音(C)の文字列に変換して、「VV」と「CC」を含まないものをカウントして題意の確率を求めました。
● baloon1.py
# coding: UTF-8 # baloon1.py import itertools from fractions import Fraction def isVowel(c): return c.upper() in 'AIUEO' def main(): P = 'BALLOON' total = count = 0 for p in itertools.permutations(P): total+=1 s = '' for q in p: if isVowel(q): s+='V' else: s+='C' if 'VV' in s: continue if 'CC' in s: continue # チェックを潜り抜けたものだけをカウント count+=1 print("%d / %d = %s"%(count,total,Fraction(count,total))) if __name__ == '__main__': main()
●実行結果
144 / 5040 = 1/35
※参考URL
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14152580344
●知恵袋の男女が並ぶ確率の問題をJavaで解いてみた。
- 作者: 大津真
- 出版社/メーカー: インプレス
- 発売日: 2016/03/18
- メディア: Kindle版
- この商品を含むブログ (1件) を見る
Python機械学習プログラミング 達人データサイエンティストによる理論と実践 (impress top gear)
- 作者: Sebastian Raschka,株式会社クイープ,福島真太朗
- 出版社/メーカー: インプレス
- 発売日: 2016/06/30
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (4件) を見る