2016-03-29 9 views
0

Denken Sie an die Unit Circle x 2. Was ich getan habe, ist zwei Listen zu erstellen, eine für x und eine für y, die 500 Paare von Zufallszahlen (x, y) produziert. Dann habe ich r=x2+y2 in meinem while Loop erstellt, wobei r der Radius und x2=x**2 and y2=y**2 ist. Was ich in der Lage sein möchte zu zählen ist die Anzahl der Male r=<2. Ich nehme an, dass meine if Anweisung in der while Schleife sein muss, aber ich weiß nicht, wie man tatsächlich zählt, wie oft die Bedingung r=<2 erfüllt ist. Muss ich einen list für die r Werte erstellen?Count Vorkommen mit If-Anweisung 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

Wenn Sie wollen einfach nur zählen, wenn die Bedingung erfüllt ist, warum nicht eine Zählervariable, auf Null, bevor die Schleife initialisiert, und erhöhte dann jedes Mal, wenn 'r <= 2' ist wahr? – svohara

Antwort

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

Können Sie bitte Ihre Lösungen erklären, anstatt nur Code zur Verfügung zu stellen? Vielen Dank. –

+0

Die Lösung soll die Anzahl der Male angeben, die das zufällige Paar in den Kreis von Radius 2 passen würde. – runnerrunner

0

Sie benötigen zwei hier Zähler. Einer für die Gesamtanzahl der Punkte (i) und einer für die Anzahl der Punkte, die innerhalb Ihres Kreises liegen. r <= 2 (Ich nenne das eine isInside). Sie möchten nur den Zähler isInside inkrementieren, wenn der Punkt innerhalb Ihres Kreises liegt (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 
Verwandte Themen