たまこんブログ

学生×プログラミング→2020年3月ブログ開設!趣味の一環でPythonでつくったゲーム や自分が読んで役に立った 本、知識などを紹介しています!

 [Python] 数Aの確率の問題を解いてみた

数Aの教科書にある問題をPythonで再現してみました。なお、答えは小数なので近似値になります

問題1

問題1 2個のさいころを同時に投げるとき、目の和が5になる確率を求めよ

import random
count=0
E=10000
for i in range(0,E):
    a=random.randint(1,6)
    b=random.randint(1,6)
    c=a+b
    
    if c==5:
        count=count+1
p=count/E

print(p)

解説

5,6行目 サイコロをa,bにして、乱数で1-6の乱数を発生させる。
7,9行目 出た目を合計し、5だった場合countという変数に1を加える。
3行目  それを回す回数をEとする。
最後  pで確率を求める。

問題2

問題2   3枚の硬貨を同時に投げるとき、そのうち1枚だけ表が出る確率を求めよ

import random
count=0
E=10000000
for i in range(0,E):
    a=random.randint(0,1) #0が裏 1が表
    b=random.randint(0,1)
    c=random.randint(0,1)
    d=a+b+c              #一枚だけ表のときは合計が1になることを利用
    
    if d==1:
        count=count+1
p=count/E

print(p)

解説

5,6,7行目 コインをa,b,cとして、0か1の乱数を発生させる。0が裏 1が表とする。
8,9行目 dにa,b,cの合計を代入し、dが1だった場合countという変数に1を加える。
3行目  それを回す回数をEとする。
最後  pで確率を求める。

問題3

問題3 2個サイコロを同時に投げるとき、2個とも偶数の目がでる確率を求めよ

import random
count=0
E=100000
for i in range(0,E):
    a=random.randint(1,6)
    b=random.randint(1,6)
    if a%2==0:
        if b%2==0:
            count=count+1
    
p=count/E
print(p)

解説

5,6行目 サイコロをa,bにして、乱数で1-6の乱数を発生させる。
7,8行目 2で割ったあまりを求め、それが0ならば偶数と判断できる。
9行目  なのでa.bが偶数だった場合countという変数に1を加える。
最後  pで確率を求める。

まとめ

僕も最初はfor分や、変数に代入するやり方もわからなかったが何度も練習することで感覚的に分かってきた。Pythonの基礎構文を覚えるだけで数学の問題が解けてしまうのはすごいと思う。