![]() |
Annäherung an Pi mit Monte carlo, paintbox
Guten Tag!
Habe morgen matura, habe ein Problem mit unserem Monte carlo Beispiel! Und zwar schaut der Quelltext für mich ganz richtig aus, aber es wird nur die Hälfte von der Paintbox belegt und ich weis absolut nicht warum! aber seht selbst:
Code:
Also die paintbox hat width/length jeweils 200. Das Problem ist nur, das Programm belegt nur exakt linke Hälfte, die eig ganz richtig ausschaut. Wenn ich duie paintbox 100 mal 100 mache (length width), dann scheint es zu funktionieren, problem ist nur dass es dann plötzlich kein richtiges quadrat mehr ist sondern ein rechteck.
procedure TForm1.Button1Click(Sender: TObject);
var i, count,x,y : integer; begin randomize; count := 0; for i := 1 to 100000 do begin x:= random(200); y:= random(200); if (sqrt(x*x+y*y) < 200) then paintbox1.canvas.pixels[x,y] := clred else paintbox1.canvas.pixels[x,y] := clgreen; end; end; Angefangen hab ich mit length/width 400/400, dann hate ich links einen streifen wo es funktioniert und rechts. Ich dreh langsam durch. Kann es sein das width/length nicht die Pixel angibt? Bitte dringend um Lösungsvorschläge und bitte nicht kleine Hinweise, damit ich dann selber draufkommen muss, weil ich probier schon verdammt lang um und komm einfach nicht auf die lösung... und morgen ist ja matura... Pi ausgerechnet hab ich noch nicht, aber das dürfte dann kein problem sein. |
AW: Annäherung an Pi mit Monte carlo, paintbox
Hallo,
nimm mal lieber ein TImage statt dem TPaintBox. Bei einer PaintBox verschwindet das was man nicht im OnPaint zeichnet wieder, wenn es neugezeichnet werden soll. Das könnte schon dein Problem sein, weil irgend was die PaintBox zum teilweisen Neuzeichnen bringt. Einbeliebigername. |
AW: Annäherung an Pi mit Monte carlo, paintbox
Hallo,
bitte randomize nur einmal (beim Programmstart) aufrufen. Was bezweckst du mit?
Delphi-Quellcode:
Grüße
if sqrt(x*x + y*y) < 200 then
Klaus |
AW: Annäherung an Pi mit Monte carlo, paintbox
hmm in der schule haben wir das immer mit der paintbox gemacht.
randomize wird im button eh nur einmal aufgerufen. wenn ich es bei formcreate reinschreibe, ändert isch leider garnichts. er macht irgendwie immer nur die hälfte von der paintbox. es sei denn du machst die paintbox richtig klein, aber das kanns auch nicht sein! |
AW: Annäherung an Pi mit Monte carlo, paintbox
Delphi-Quellcode:
->
if (sqrt(x*x+y*y) < 200)
Delphi-Quellcode:
if sqrt(sqr(x)+sqr(y)) <= sqrt(sqr(paintbox.width)+(sqr(paintbox.heigth)) then
//im radius else //asserhalb des Radius Grüße Klaus |
AW: Annäherung an Pi mit Monte carlo, paintbox
Hallo,
Zitat:
Delphi-Quellcode:
Einbeliebigername.
R:= Min(paintbox.width, paintbox.heigth)
... x:= random(R); y:= random(R); if (sqrt(x*x+y*y) < R) then ... |
AW: Annäherung an Pi mit Monte carlo, paintbox
Liste der Anhänge anzeigen (Anzahl: 1)
Wie soll es denn richtig aussehen?
Wenn ich deinen Code ausführe, dann kommt das bei rum: |
AW: Annäherung an Pi mit Monte carlo, paintbox
Zitat:
![]() |
AW: Annäherung an Pi mit Monte carlo, paintbox
tigü ja genau, so soll es aussehen!
tigü, hast du meinen quelltext imn ersten beitrag eins zu eins übernommen? hmm, dann probier ich mal, den radius mit paintbox width auszudürcken! EDIT: Ich werd noch wahnsinnig, jetzt hab ich < paintbox1.width und es geht immer noch nicht! übrigens: als zum berechnen von pi dachte ich mir K/Q = 200²Pi/200² erklärung: Verhältnis der punkte von Kreis und Quadrat(gesamtes) = verhältnis von Viertelkreisgleichung mit festgelegtem radius und fläche von quadrat und daraus drück ich mir aus: K/Q mal 4 = Pi |
AW: Annäherung an Pi mit Monte carlo, paintbox
Liste der Anhänge anzeigen (Anzahl: 1)
so so schaut das aus bei mir, siehe anhang
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz