Buffon Nadelproblem

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
philistion
User
Beiträge: 108
Registriert: Sonntag 7. Februar 2010, 14:16

Daran hab ich auch schon gedacht, um mehrere lambdas in weniger Platz reinzupacken.
Werd wohl noch ein bisschen rumexperimentieren müssen..
BlackJack

Was mich von `eval`/`exec` Abstand nehmen liess war die Tatsache, das meine Lösung soviel Speicher gefressen hat, dass man keine 10000000 eingeben konnte. Den Prozess musste ich abschiessen. Ich wollte keine Lösung die nur theoretisch funktioniert. :-)

Hier ist meine "lange" Version (179 Zeichen):

Code: Alles auswählen

import math as m,random;r=random.random
g=lambda x,b:(x-b>=1)-(x-b<0)!=(x+b>=1)-(x+b<0);t=input();s=0
for _ in'x'*t:a=m.pi*r();s+=g(r(),m.sin(a)/2)+g(r(),m.cos(a)/2)
print 4.*t/s
Benutzeravatar
HerrHagen
User
Beiträge: 430
Registriert: Freitag 6. Juni 2008, 19:07

Wer beim Code-Golf versucht auch noch performanten Code zu schreiben ist selber Schuld...
Krze um jdn Prs!
BlackJack

@HerrHagen: Es ging dabei nicht um "performant", sondern um lauffähig. Wenn ich das Ding nicht gestoppt hätte als die Swap-Partition zu 80% belegt war, hätte das Betriebssystem die Notbremse gezogen. Ich wollte halt etwas früher wieder ein benutzbares System haben.
bloody1337
User
Beiträge: 9
Registriert: Samstag 5. Juni 2010, 14:11

oha..^^

hier hat sich ja ganz schön was entwickelt.

eine frage habe ich trotzdem noch :P

und zwar,was diese zeilen geometrisch! bedeuten:

Code: Alles auswählen

        a = math.pi *  random.random()
        b = math.cos(a) / 2.0
        c = math.sin(a) / 2.0
        if intp(y - b) != intp(y + b):
            s = s + 1
        if intp(x - c) != intp(x + c):
            s = s + 1

a= ist der winkel der nadel oder?
was ist b und c? wie kann man die sachverhalte in einer skizze darstellen?

das wäre meine wirklich letzte frage,wäre echt super,wenn ihr mir auch dabei helfen würdet!


danke und schönen feierabend ;)
Benutzeravatar
b.esser-wisser
User
Beiträge: 272
Registriert: Freitag 20. Februar 2009, 14:21
Wohnort: Bundeshauptstadt B.

b und c sind die 'Länge' der Nadel auf der y- bzw. x-Achse, x+-c/2, y+-b/2 sind dann die Koordinaten der Nadelenden - sind doch ganz normale geometrische Funktionen (Tip: aufmalen).
hth, Jörg
Wir haben schon 10% vom 21. Jahrhundert hinter uns!
bloody1337
User
Beiträge: 9
Registriert: Samstag 5. Juni 2010, 14:11

oh man.. ich durchschau es einfach nicht,was mit der länge der nadeln b und c gemeint ist.

und dann,wenn man von y (dem mittelpunkt der nadel bzgl. y-achse) minus b - also die länge der nadel von der x-achse?! abzieht , wie kommt man da auf die koordinaten eines nadelendes? geht man da nicht einfach nach unten oder links o.ä. und kommt auf einen ganz anderen punkt,der gar nciht zur nadel gehört. die länge müsste ja eig. da nicht auf den achsen liegen,sondern mit dem winkel der nadel.!??!!

ich bin echt am verzweifeln :( wenn das jemand skizzenhaft mir aufmalen könnte, wäre das super!

gruß
bloody
BlackJack

Wieviel würdest Du denn dafür zahlen, dass Dir jemand *Deinen* Vortrag erarbeitet!? :twisted:
Benutzeravatar
DaMutz
User
Beiträge: 202
Registriert: Freitag 31. Oktober 2008, 17:25

jemand hat den Vortrag bereits gemacht: http://www.mathematik.uni-kassel.de/~sp ... eferat.doc
Antworten