python123第三周第九题
计算圆周率PI
计算用到了蒙特卡罗方法:
通过模拟随机点落在区域内的概率,计算圆的面积,间接求得圆周率PI
点击查看代码
from random import random
from time import *
from tqdm import tqdm
N = eval(input())
def is_PI(N):
DARTS = N * N
hits = 0.0
for i in range(1,DARTS+1):
x,y = random(),random()
dist = pow(x ** 2 + y ** 2, 0.5)
if dist <= 1.0:
hits += 1
pi = 4.0 * (hits / DARTS)
return pi
print(is_PI(N))
点击查看代码
from random import random
import time
from tqdm import tqdm
N = eval(input())
def is_PI(N):
DARTS = N * N
hits = 0.0
for i in tqdm(range(1,DARTS+1)):
x,y = random(),random()
dist = pow(x ** 2 + y ** 2, 0.5)
if dist <= 1.0:
hits += 1
pi = 4.0 * (hits / DARTS)
return pi
print(is_PI(N))
点击查看代码
from random import random
import time
from tqdm import tqdm
N = eval(input())
def is_PI(N):
pbar = tqdm(total = 100)
DARTS = N * N
hits = 0.0
for i in range(1,DARTS+1):
x,y = random(),random()
dist = pow(x ** 2 + y ** 2, 0.5)
if dist <= 1.0:
hits += 1
pbar.update(1)
pbar.close()
pi = 4.0 * (hits / DARTS)
return pi
print(is_PI(N))
点击查看代码
import time
from random import random
N = int(input())
scale = 50
def is_PI(N):
DARTS = N * N
hits = 0.0
for i in range(1,DARTS+1):
x,y = random(),random()
dist = pow(x ** 2 + y ** 2, 0.5)
if dist <= 1.0:
hits += 1
c = (i / DARTS) * 100
a = '*' * int(c*scale/100)
b = '.' * (scale - int(c*scale/100))
print("\r{:^3.0f}%[{}->{}]".format(c, a, b), end='')
pi = 4.0 * (hits / DARTS)
print("\n")
return pi
pi = is_PI(N)
print(pi)

浙公网安备 33010602011771号