AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Annäherung an Pi mit Monte carlo, paintbox
Thema durchsuchen
Ansicht
Themen-Optionen

Annäherung an Pi mit Monte carlo, paintbox

Ein Thema von Borgschüler · begonnen am 19. Jan 2012 · letzter Beitrag vom 19. Jan 2012
Antwort Antwort
Seite 1 von 3  1 23      
Borgschüler

Registriert seit: 6. Sep 2007
20 Beiträge
 
#1

Annäherung an Pi mit Monte carlo, paintbox

  Alt 19. Jan 2012, 11:12
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:
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;
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.
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.
  Mit Zitat antworten Zitat
einbeliebigername

Registriert seit: 24. Aug 2004
140 Beiträge
 
Delphi XE8 Professional
 
#2

AW: Annäherung an Pi mit Monte carlo, paintbox

  Alt 19. Jan 2012, 11:25
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.
  Mit Zitat antworten Zitat
Klaus01
Online

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Annäherung an Pi mit Monte carlo, paintbox

  Alt 19. Jan 2012, 11:34
Hallo,

bitte randomize nur einmal (beim Programmstart) aufrufen.

Was bezweckst du mit?
if sqrt(x*x + y*y) < 200 then Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Borgschüler

Registriert seit: 6. Sep 2007
20 Beiträge
 
#4

AW: Annäherung an Pi mit Monte carlo, paintbox

  Alt 19. Jan 2012, 11:37
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!
  Mit Zitat antworten Zitat
Klaus01
Online

Registriert seit: 30. Nov 2005
Ort: München
5.768 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Annäherung an Pi mit Monte carlo, paintbox

  Alt 19. Jan 2012, 11:41
 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
Klaus

Geändert von Klaus01 (19. Jan 2012 um 12:35 Uhr) Grund: nicht richtig überlegt
  Mit Zitat antworten Zitat
einbeliebigername

Registriert seit: 24. Aug 2004
140 Beiträge
 
Delphi XE8 Professional
 
#6

AW: Annäherung an Pi mit Monte carlo, paintbox

  Alt 19. Jan 2012, 11:53
Hallo,

if sqrt(sqr(x)+sqr(y)) <= sqrt(sqr(paintbox.width)+(sqr(paintbox.heigth)) then
Das ist aber nicht im Sinne des Erfinders. Denn damit ist der Radius des Kreis so groß wie die Diagonale der PaintBox. Das hat dann die Folge, dass alle Punkte, die man sieht, innerhalb des Kreises liegen. Besser ist das:
Delphi-Quellcode:
  R:= Min(paintbox.width, paintbox.heigth)
  ...
    x:= random(R);
    y:= random(R);
    if (sqrt(x*x+y*y) < R) then
  ...
Einbeliebigername.
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.070 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Annäherung an Pi mit Monte carlo, paintbox

  Alt 19. Jan 2012, 11:53
Wie soll es denn richtig aussehen?
Wenn ich deinen Code ausführe, dann kommt das bei rum:
Miniaturansicht angehängter Grafiken
unbenannt.png  
  Mit Zitat antworten Zitat
Benutzerbild von guinnes
guinnes

Registriert seit: 28. Feb 2007
Ort: Bottrop
265 Beiträge
 
Delphi 5 Enterprise
 
#8

AW: Annäherung an Pi mit Monte carlo, paintbox

  Alt 19. Jan 2012, 12:10
Wie soll es denn richtig aussehen?
Genau so ! : http://de.wikipedia.org/wiki/Monte-Carlo-Simulation
Glückauf
  Mit Zitat antworten Zitat
Borgschüler

Registriert seit: 6. Sep 2007
20 Beiträge
 
#9

AW: Annäherung an Pi mit Monte carlo, paintbox

  Alt 19. Jan 2012, 12:16
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
  Mit Zitat antworten Zitat
Borgschüler

Registriert seit: 6. Sep 2007
20 Beiträge
 
#10

AW: Annäherung an Pi mit Monte carlo, paintbox

  Alt 19. Jan 2012, 12:21
so so schaut das aus bei mir, siehe anhang
Miniaturansicht angehängter Grafiken
monte-carlo.jpg  
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz