• python之圆周率


     1 #!/usr/bin/env python                                                                           
     2 #-*- coding:utf-8 -*-
     3 ############################
     4 #File Name: pi.py
     5 #Author: frank
     6 #Mail: frank0903@aliyun.com
     7 #Created Time:2018-04-29 15:46:50
     8 ############################
     9 
    10 import random
    11 import time
    12 
    13 #spigot algorithms 计算圆周率
    14 #圆周率近似公式计算
    15 #pi = 0.0
    16 #N = 1000
    17 #
    18 #for k in range(N):
    19 #    pi += 1/pow(16, k) * (4/(8*k+1) - 2/(8*k+4) - 1/(8*k+5) - 1/(8*k+6))
    20 #
    21 #print(pi);
    22 
    23 #蒙特卡罗方法计算圆周率
    24 #思想:用概率的方法得到圆的面积S,然后用圆的面积除以半径的平方得到PI的值,即PI=S/(R*R)
    25 #设,正方形的长为a,内切圆的半径为r,将正方形分为4等分,坐标原点在圆心; 
    26 #以第一象限的4分之一正方形/内切圆为对象,设投掷的总次数为N,投掷在圆内的次数为m(m<=N)
    27 #PI = 4 * (m/N)
    28 
    29 #程序中设定r=1
    30 #投掷点在圆内的条件是: 点(x,y)到圆心的距离小于等于r,则认为投掷在圆内;即,(x*x+y*y)的平方根 <= 1
    31 
    32 pi = 0.0
    33 #1,000,000,000 十亿 599.390809s
    34 #1,000,000 百万 0.6s
    35 #10,000,000 千万  6.05s
    36 #100,000,000 一亿  59.98s
    37 N = 1000000000
    38 r = 1.0
    39 m = 0
    40 
    41 
    42 time_start = time.perf_counter()
    43 for i in range(N):
    44     x = random.random()
    45     y = random.random()
    46     if (pow((x**2 + y**2), 0.5) <= r):
    47     ¦   m += 1;
    48 
    49 pi = 4*m/N
    50 print("圆周率是:{:f},m={:d}".format(pi,m))
    51 print("计算耗时:{:f}s".format(time.perf_counter()-time_start))
  • 相关阅读:
    权限系统设计-day02
    权限系统设计-day01
    SSH集成(Struts+Spring+Hibernate)
    Spring-day03
    Spring-day02
    神经网络与深度学习
    深度学习概述
    结构化机器学习项目
    无监督学习方法
    《2018自然语言处理研究报告》整理(附报告)
  • 原文地址:https://www.cnblogs.com/black-mamba/p/8971953.html
Copyright © 2020-2023  润新知