Python :: Aufgabe #223

3 Lösungen Lösungen öffentlich

Stochastische Ermittlung der Eulerschen-Zahl

Anfänger - Python von hollst - 12.04.2019 um 09:37 Uhr
Wir betrachten folgendes Zufallsexperiment: Aus einer Menge reeller und gleichverteilter Zahlen {X} mit 0 <= x < 1.0
ziehen wir solange Zahlen x1, x2 ... xn bis deren Summe >= 1.0 ist. n ist dann das Ergebnis eines Zufallsexperimentes.
Wir müssen mindestens zweimal ziehen, den ein einzelnes Zufalls-x ist ja immer kleiner als 1.0.

Die Frage lautet: Wie groß ist n im Mittel?

Hinweis: Laut Theorie ist n = 2.718281828459045... (= e). Nun gut, grau ist alle Theorie, wir wollen sehen, ob der Computer
(in etwa) der gleichen Meinung ist.

Viel Spaß!

Lösungen:

vote_ok
von jigga (4260 Punkte) - 13.04.2019 um 09:29 Uhr
Quellcode ausblenden Python-Code
import random, math
from decimal import *

getcontext().prec = 50

n_all = 0
count = int(input("Anzahl Durchlaeufe: "))

for i in range(count):
	x = 0.0
	n = 0
	while (x < 1):
		x += random.random()
		n += 1
	n_all += n
print("Zufallsexperiment: ", Decimal(n_all/count))
print("Eulersche Zahl   : ", Decimal(math.e))
print("Abweichung       : ", str(100*abs(1-(n_all/count/math.e))) + "%")
vote_ok
von Kotgreifer (1100 Punkte) - 17.06.2019 um 10:59 Uhr
Quellcode ausblenden Python-Code
import random

glob_counter=0
for i in range(1000001):
    temp= 0.0
    counter = 0
    while temp<1.0:
        temp=random.random()+temp
        counter=counter+1
    glob_counter= glob_counter+counter

erg=float(glob_counter/1000000)
print(erg)
vote_ok
von kheradurakh (40 Punkte) - 19.06.2019 um 07:33 Uhr
Quellcode ausblenden Python-Code
from random import *

n=0

for i in range(0,1000000):
    a=0
    while True:
        a=a+random()
        n=n+1
        if (a>1):
            break

e=n/(i+1)
print(e)