2016年8月25日木曜日

開発環境

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 コメント:

コメントを投稿