Computing PI using Monte Carlo method

import math
import random

class Point():
    def __init__(self, x = 0, y = 0):
        self.x = x
        self.y = y

    def set_rand_range(self, rand_start, rand_end):
        self.rand_start = rand_start
        self.rand_end = rand_end

    def get_random(self):
        r = random.uniform(self.rand_start, self.rand_end)
        return r

    def set_x(self):
        self.x = self.get_random()

    def get_x(self):
        return self.x

    def set_y(self):
        self.y = self.get_random()

    def get_y(self):
        return self.y

def get_randpoint():
    p = Point()
    p.set_rand_range(0, 1)
    p.set_x()
    p.set_y()
    return p.get_x(), p.get_y()

def compute_pi(n):
    x, y = 0, 0
    count = 0
    
    for i in range(n):
        x, y = get_randpoint()
        if math.sqrt(x * x + y * y) <= 1:
            count += 1

    pi = 4.0 * count / n
    print pi
        
        

def main():
    L = [100, 1000, 10000, 100000, 1000000]
    for i in range(len(L)):
        compute_pi(L[i])

if __name__ == '__main__':
    main()
    print math.pi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值