简体   繁体   中英

Count occurances with if statement python

Think of the Unit Circle x 2 . What I have done is create two lists, one for x and one for y , producing 500 pairs of random (x,y). Then I created r=x2+y2 in my while loop, where r is the radius and x2=x**2 and y2=y**2 . What I want to be able to do is count the number of times r=<2. I assume my if statement needs to be in the while loop, but I don't know how to actually count the number of times the condition r=<2 is met. Do I need to create a list for the r values?

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:
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

You need two counters here. One for the total number of points ( i ) and one for the number of points that lie within your circle r <= 2 (I'm calling this one isInside ). You only want to increment the isInside counter if the point lies within your circle ( r <= 2 ).

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM