上一篇:有進度條的圓周率計算
圓周率的計算
描述
求解圓周率可以采用蒙特卡羅方法,在一個正方形中撒點,根據在1/4圓內點的數量占總撒點數的比例計算圓周率值。
請以123作為隨機數種子,獲得用戶輸入的撒點數量,編寫程序輸出圓周率的值,保留小數點后6位。
輸入輸出示例
輸入 | 輸出 | |
示例 1 | |
|
from random import seed #調用random中函數seed()獲取隨機數種子 from random import random #調用random中函數random() DARTS= eval(input()) #輸入撒點數量,數越大越准 seed(123) #獲取唯一確定的隨機數列 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= hits+1 pi= 4*(hits/ DARTS) #得到圓周率的近似值 print("{:.6f}".format(pi)) #保留小數點后6位
其中涉及的知識點
random庫
(1),seed(a)函數
初始化給定的隨機數種子(a) ,得到唯一確定的隨機數列 。a = None 時默認當前系統時間
常與random庫中其他函數疊用,a不變時與其他函數疊用得到唯一的隨機數(舉一反三實驗復現)
(2),random()函數
生成一個[0.0, 1.0]之間的隨機小數
(3),randint( a, b)
生成一個[ a, b]之間的整數
(4),randrange(M , N [ ,K])
生成一個[ M, N ]間以K為步長的隨機整數,[,K]可省,默認為1
(5),uniform( a, b)
生成(a , b)之間隨機小數 (16.f)