2016-03-29 84 views
0

想想Unit Circle x 2。我所做的是創建兩個列表,一個爲x,另一個爲y,產生500對隨機(x,y)。然後我在我的while循環中創建了r=x2+y2,其中r是半徑,而x2=x**2 and y2=y**2。我想要做的是計算次數r=<2.我假設我的if聲明需要在while循環中,但我不知道如何實際計算條件r=<2滿足的次數。我需要爲r值創建list嗎?用if語句計算出現python

import random 
from math import * 

def randomgen(N): 
    rlg1=[] 
    rlg2=[] 
    a=random.randint(0,N) 
    b=float(a)/N 
    return b 

i=0 
rlg=[] 
rlg2=[] 
countlist=[] 
while i<500: 
    x=randomgen(100)*2 
    y=randomgen(100)*2 
    x2=x**2 
    y2=y**2 
    r=x2+y2 
    rlg.append(x) 
    rlg2.append(y) 
    print rlg[i],rlg2[i] 
    i+=1 

    if r<=2: 
+0

如果您只是想在條件滿足時進行計數,爲什麼沒有計數器變量,在循環前初始化爲零,然後每次增加'if r <= 2'爲真? – svohara

回答

0
import random 
from math import * 

def randomgen(N): 
    rlg1=[] 
    rlg2=[] 
    a=random.randint(0,N) 
    b=float(a)/N 
    return b 

i=0 
rlg=[] 
rlg2=[] 
countlist=[] 
amount = 0 
while i<500: 
    x=randomgen(100)*2 
    y=randomgen(100)*2 
    x2=x**2 
    y2=y**2 
    r=x2+y2 
    rlg.append(x) 
    rlg2.append(y) 
    print rlg[i],rlg2[i] 
    i+=1 

    if r<=2: 
     amount += 1 
+5

您能解釋一下您的解決方案,而不僅僅是提供代碼嗎?謝謝。 –

+0

該解決方案旨在產生隨機對在半徑2的圓內適合的次數。 – runnerrunner

0

你需要在這裏計數器。一個爲總點數(i),另一個爲你圈內的點數r <= 2(我叫這個isInside)。如果點位於您的圓圈內(r <= 2),您只需要增加isInside計數器。

i = 0 
rlg = [] 
rlg2 = [] 
countlist = [] 

isInside = 0 

while i < 500: 

    x=randomgen(100)*2 
    y=randomgen(100)*2 
    x2=x**2 
    y2=y**2 
    r=x2+y2 
    rlg.append(x) 
    rlg2.append(y) 
    print rlg[i],rlg2[i] 
    i+=1 

    if r <= 2: 
     # increment your isInside counter 
     isInside += 1