Bergervei/Python-Die Eulersche Zahl
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
<language>Python</language>
== Euler-Zufall 1 ==
Wie oft müssen Zufallszahlen aus dem Intervall [0, 1] gebildet werden, damit die Summe zum ersten Mal 1 überschreitet?
=== Simulation ===
<code id="639d9442a5eee">
from random import *
from math import exp
def eulerzufall1(n):
m = 0
for i in range(n):
z = 0; j = 0
while z < 1:
z += random()
j += 1
m += j
return m / n
def eulerzahl1(n):
print("Eulerzahl: %1.8f" % eulerzufall1(n))
print("Zum Vergleich: e = %1.8f" % exp(1))
</code>
<run id="639d9442a5f88">
eulerzahl1(20000)
</run>
== Euler-Zufall 2 ==
Eine Folge von Zahlen wird zufällig aus dem Intervall [0, 1] erzeugt.<br>
Der Prozess wird so lange fortgesetzt, wie die Folge monoton steigend ist.<br>
Welche Länge der monotonen Folge wird erwartet?
=== Simulation ===
<code id="639d9442a5f3d">
from random import *
from math import exp
def eulerzufall2(n):
m = 0
for i in range(n):
z0 = 0; z = random()
j = 1
while z0 < z:
z0 = z
z = random()
j += 1
m += j
return m / n
def eulerzahl2(n):
print("Eulerzahl: %1.8f" % eulerzufall2(n))
print("Zum Vergleich: e = %1.8f" % exp(1))
</code>
<run id="639d97fe62936">
eulerzahl2(200000)
</run>
== Das Rosinenproblem ==
In den Teig für 100 Brötchen werden zufällig 100 Rosinen hinengeknetet.<br>
Wie viele Brötchen enthalten mindestens eine Rosine?
=== Simulation ===
<code id="639d97fe62879">
from random import *
from math import exp
def rosinen(n):
r = [randint(0, n - 1) for i in range(n)]
z = 0
for j in range(n):
k = 0
for i in range(n):
if r[i] == j: k = 1; break
z += k
return z / n
def rosinenproblem(m):
z = 0
for i in range(m):
z += rosinen(100)
mw = z / m
print("Mittelwert: %1.8f" % mw)
ew = 1 - 1 / exp(1)
print("Zum Vergleich: 1 - 1/e = %1.8f" % ew)
</code>
<run id="639d97fe62982">
rosinenproblem(1000)
</run>
== Das Münzenproblem ==
Eine Fastfood-Kette verschenkt bei jedem Einkauf eine Münze eines 50-teileigen Satz von Sondermünzen.<br>
Ziel ist es, den gesamten Münzsatz zu sammeln.<br>
Welchen Bruchteil des kompletten Münzsatzes würde man nach 50 Einkäufen erwarten?
=== Simulation ===
<code id="639d97fe628dc">
from random import *
from math import exp
def auswahl(n):
muenzen = [i for i in range(n)]
pos = randint(0, n - 1)
return muenzen[pos]
def muenzenproblem(n, anz):
sum = 0
for j in range(anz):
set = []
for i in range(n):
muenze = auswahl(n)
if not (muenze in set):
set.append(muenze)
sum += len(set) / n
h = sum / anz
print("Relative Häufigkeit: %1.8f" % h)
vw = 1 - 1 / exp(1)
print("Zum Vergleich: 1 - 1 / e = %1.8f" % vw)
</code>
<run id="639d97fe629c7">
muenzenproblem(50, 100)
</run>