用Delphi编写圆周率模拟器
圆周率是一个古老的东西。早在1700多年前,祖冲之就有精确到小数点后七位的数值,而现在可以通过计算机程序计算到十亿位!我是圆周率的粉丝。这个“爱好”至少源于我对这个无理数的热情。我不仅能背到小数点后100位,还从网上搜集了几个计算π的程序。如果你有兴趣,可以去我在nihg.yeah.net的站查一下。
一、模拟器原理
这个程序还使用了计算π值的算法。她只是一个概率模拟,即在一个边长为200的正方形内随机产生若干个点,以一条圆弧为边界分别统计点数。由于点多,几乎覆盖了整个区域。此时,点数可视为其面积的面积。可以推导如下:
蓝色区域中的点数:总数≈蓝色区域:总面积
蓝色区域的点数:总数≈圆形区域/4:总区域
蓝色区域的点数:总数≈ π× 200× 200/4: 200× 200
π≈ 4×蓝色区域的点数/总点数
当然点的位置会重复,所以结果和π值不一样。但是,当点数足够多的时候,可以看到一个非常接近的结果。
二、程序设计
打开Delphi 7,首先根据图1设计表单:
首先,程序在Image1控件区域绘制一个边长为200的正方形作为程序的演示窗口,所以FormCreate事件如下:
程序TForm1。FormCreate(发件人:to object);
开始
//绘制一个亮绿色正方形演示框
图1。canvas . brush . color:= cl black;
图1。Canvas.FillRect(Rect(0,0,199,199));
图1。canvas . pen . color:= cl lime;
图1。Canvas .矩形(0,0,199,199);
double buffered:= True;
结束;
然后增加一个定时器,实现点的绘制和π的计算:
程序TForm1。Timer1Timer(发送方:to object);
定义变量
a,b,I,ii:longint;
pi,piok:单;
开始
//随机生成坐标点
I:= random(200);
ii:=随机(200);
如果(i*i+ii*ii开始
位律师回复
0条评论