Monte Carlo methods: Difference between revisions
Content added Content deleted
No edit summary |
No edit summary |
||
Line 931: | Line 931: | ||
The script give in reality an output formatted in HTML |
The script give in reality an output formatted in HTML |
||
<pre>π ≅ 3.14139</pre> |
<pre>π ≅ 3.14139</pre> |
||
=={{header|Delphi}}== |
|||
{{works with|Delphi|6.0}} |
|||
{{libheader|SysUtils,StdCtrls}} |
|||
<syntaxhighlight lang="Delphi"> |
|||
function MonteCarloPi(N: cardinal): double; |
|||
{Approximate Pi by seeing if points fall inside circle} |
|||
var I,InsideCnt: integer; |
|||
var X,Y: double; |
|||
begin |
|||
InsideCnt:=0; |
|||
for I:=1 to N do |
|||
begin |
|||
{Random X,Y = 0..1} |
|||
X:=Random; |
|||
Y:=Random; |
|||
{See if it falls in Unit Circle} |
|||
if X*X + Y*Y <= 1 then Inc(InsideCnt); |
|||
end; |
|||
{Because X and Y are squared, they only fall with 1/4 of the circle} |
|||
Result:=4 * InsideCnt / N; |
|||
end; |
|||
procedure ShowOneSimulation(Memo: TMemo; N: cardinal); |
|||
var MyPi: double; |
|||
begin |
|||
MyPi:=MonteCarloPi(N); |
|||
Memo.Lines.Add(Format('Samples: %15.0n Pi= %2.15f',[N+0.0,MyPi])); |
|||
end; |
|||
procedure ShowMonteCarloPi(Memo: TMemo); |
|||
begin |
|||
ShowOneSimulation(Memo,1000); |
|||
ShowOneSimulation(Memo,10000); |
|||
ShowOneSimulation(Memo,100000); |
|||
ShowOneSimulation(Memo,1000000); |
|||
ShowOneSimulation(Memo,10000000); |
|||
ShowOneSimulation(Memo,100000000); |
|||
end; |
|||
</syntaxhighlight> |
|||
{{out}} |
|||
<pre> |
|||
Samples: 1,000 Pi= 3.156000000000000 |
|||
Samples: 10,000 Pi= 3.152000000000000 |
|||
Samples: 100,000 Pi= 3.142920000000000 |
|||
Samples: 1,000,000 Pi= 3.140864000000000 |
|||
Samples: 10,000,000 Pi= 3.141990800000000 |
|||
Samples: 100,000,000 Pi= 3.141426720000000 |
|||
</pre> |
|||
=={{header|E}}== |
=={{header|E}}== |