Python :: Aufgabe #71

5 Lösungen Lösungen öffentlich

Berechnen von Pi mit Zufallszahlen

Anfänger - Python von eulerscheZhl - 07.03.2015 um 07:58 Uhr
Man kann die Kreiszahl Pi näherungsweise bestimmen, indem man Zufallszahlen generiert:
Man stelle sich einen Kreis mit Mittelpunkt (0/0) und Radius 1 vor. Es werden zufällig Punkte erzeugt, bei denen sowohl x als auch y im Intervall [0;1[ liegen. Dann wird die Entfernung dieser Punkte zum Ursprung ermittelt. Ist diese Entfernung kleiner als 1, so liegt der Punkt innerhalb des Kreises.
Setzt man bei einer ausreichenden Zahl von Zufallspunkten die Zahl der Treffer in das richtigen Verhältnis zur Gesamtzahl der Punkte, so erhält man einen Näherungswert für Pi (Pi = 4 * AnzahlTreffer / AnzahlGesamt).

Schreibe ein Programm, das auf oben beschriebene Weise Pi berechnet.

Lösungen:

vote_ok
von jigga (4260 Punkte) - 17.05.2015 um 21:22 Uhr
Quellcode ausblenden Python-Code
import random, math
random.seed()
treffer = 0

z = input("Anzahl Durchlaeufe: ")
anzahl = int(z)

for i in range(anzahl):
	x = random.random()
	y = random.random()
	z = math.sqrt(x**2 + y**2)
	if z < 1:
		treffer += 1

print("Pi in Naeherung bei", anzahl, "Durchlaeufen: ", 4*treffer/anzahl)
print("Abweichung: " + str(round(100*abs(1-(4*treffer/anzahl)/math.pi),2)) + "%")
vote_ok
von abdo (50 Punkte) - 04.09.2015 um 11:05 Uhr
Quellcode ausblenden Python-Code
import math
import random
def PI():
  anzahltreffer=0
  k=0
  
  a=0
  while a<100000000:
    x=random.random()
    y=random.random()
    d=math.sqrt(x*x+y*y)
    if d<1:
      anzahltreffer =anzahltreffer+1
    else:
      k = k +1
    a = a+1
    
  
  
  pi=4*(anzahltreffer+0.0)/(k+anzahltreffer)
  print pi
  
PI()
vote_ok
von BlueBite (100 Punkte) - 02.03.2016 um 21:10 Uhr
Quellcode ausblenden Python-Code
zaehler = input("Mit wievielen Zufallszahlen soll versucht werden, pi zu finden?: ")
counter_in = 0

for i in range(zaehler):
    r = random(2)
    if r[0]**2 + r[1]**2 < 1:
        counter_in += 1
    else:
        pass

pi = float(4*counter_in)/zaehler

print pi
vote_ok
von Nachbar (2820 Punkte) - 17.03.2017 um 16:10 Uhr
Mathematisch habe ich nur Bahnhof verstanden, die nötigen Formeln ergoogelt. Programmiertechnisch ist es eine nette Anfängeraufgabe, weil nicht wirklich anspruchsvoll.

Quellcode ausblenden Python-Code
# Python 2.7
# -*- coding: utf-8 -*-
 
import random

anzahl_versuche = input("Wieviele Punkte sollen gesetzt werden: ")
punkte_im_kreis = 0
z = anzahl_versuche

# weil´s dann länger dauert
if anzahl_versuche >= 5000000:
    print "\nAnnaeherung an Pi wird berechnet..."
while z > 0:
    x = random.random()
    y = random.random()
    if (x ** 2 + y ** 2) <= 1:
        punkte_im_kreis = punkte_im_kreis + 1
    z = z - 1
        
print "\nERGEBNIS:\n"
print "****************************************************"
print "Annaeherung an Pi: " + str(punkte_im_kreis * 4.0 / anzahl_versuche) + " (Pi = 3.14159265...)"
print "****************************************************"   
print str(anzahl_versuche) + " Zufallspunkte gesetzt"
print str(punkte_im_kreis) +  " Punkte innerhalb des Kreises (" + str(punkte_im_kreis*100/anzahl_versuche) + "%)"
vote_ok
von 0 (0 Punkte) - 01.10.2017 um 15:06 Uhr
Quellcode ausblenden Python-Code
#Berechnung von Pi
from random import randint
from math import pi,sqrt
def kreis():
    x=randint(1,99999)/100000
    y=randint(1,99999)/100000
    r=sqrt(x**2+y**2)
    if r<1:
        return True
    else:
        return False
anzahl=1000
treffer=0
for i in range(1000):
    if kreis():
        treffer+=1
Pi=4*treffer/anzahl
print("Die berechnete Zahl für Pi ist:",Pi,"\n und die tatsächliche Zahl ist:",pi)