開発環境
- OS X El Capitan - Apple (OS)
- Emacs (Text Editor)
- Python 3.5 (プログラミング言語)
Pythonからはじめる数学入門 (Amit Saha (著)、黒川 利明 (翻訳)、オライリージャパン)の5章(集合と確率を操作する)、5.4(プログラミングチャレンジ)、問題5-2(大数の法則)を取り組んでみる。
問題5-2(大数の法則)
コード(Emacs)
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import random
def expectation(events, p):
return sum(
map(
lambda event: event * p(event),
events
)
)
def probability(x):
return 1 / 6
def roll():
return random.randrange(1, 7)
def average(nums):
return sum(nums) / len(nums)
if __name__ == '__main__':
events = range(1, 7)
e = expectation(events, probability)
print('Expected value: {0}'.format(e))
for n in [10**2, 10**3, 10**4, 10**5, 5 * 10**5]:
die_rolls = [roll() for _ in range(n)]
print('Trials: {0} Trial average {1}'.format(n, average(die_rolls)))
入出力結果(Terminal, IPython)
$ ./sample2.py Expected value: 3.5 Trials: 100 Trial average 3.55 Trials: 1000 Trial average 3.519 Trials: 10000 Trial average 3.5194 Trials: 100000 Trial average 3.4944 Trials: 500000 Trial average 3.497996 $
0 コメント:
コメントを投稿