• 网络学院
  • IT资讯
  • 操作系统
  • 网络技术
  • 软件应用
  • 办公软件
  • 编程技术
  • 网站架设
  • 数据库类
  • 平面设计
  • 多媒体类
  • 游戏资讯
  • 教学论文
  • 认证考试
用Delphi编写圆周率模拟器
  站点:
  • 首 页
  • 最新软件
  • 文章教程
  • 国内软件
  • 国外软件
  • 绿色软件
  • 源码下载
  • 字体下载
用Delphi编写圆周率模拟器
软件发布 用Delphi编写圆周率模拟器
网络软件 系统工具 应用软件 联络聊天 图形图像 多媒体类 行业软件 游戏娱乐 编程开发 安全相关 教育教学 数码软件 绿软下载
热门软件: QQ 瑞星 pplive e话通 木马克星 千千静听 office2000 五笔字根 Photoshop 视频分割
返回文章教程首页 >> 文章首页 >> 编程技术 >> Delphi教程 >> 用Delphi编写圆周率模拟器

用Delphi编写圆周率模拟器

添加时间: 2006-2-25 4:40:37  作者: Delphi教程  阅读次数:61   来源: http://www.d9soft.com

       

    圆周率π是个古老的东西,早在1700多年前祖冲之已将其值精确到小数点后7位,而如今通过计算机程序已能算到十亿位之多!我是个圆周率爱好者,这个“爱好”至少是出于对这个无理数的热衷,我不但可以背诵到小数点后100位,而且还收藏着从网上找到几个计算π的程序,你有兴趣可以到我的小站nihg.yeah.net找一下。

一、模拟器原理

   本程序并使用计算π值的算法,她只是一个概率模拟,即在边长为200的正方形内随机产生多个点,将点以圆弧为界分开统计,由于点的个数很多,直至几乎布满整个区域。此时,点的个数就可以看作就是它所在区域的面积。可以得到如下推导:

    蓝色区内点个数:总个数≈蓝色面积:总面积
    蓝色区内点个数:总个数≈圆面积/4:总面积
    蓝色区内点个数:总个数≈π×200×200/4:200×200
    π≈ 4×蓝色区内点个数/总个数

    当然,点的位置会重复,所以结果与π值是有差别的,不过,当点足够多时,可以看到一个非常接近的结果。

二、程序设计

    打开Delphi 7,首先按照图1设计窗体:



 

    程序首先在Image1控件区域内画一个边长为200的正方形作为程序的演示窗口,故FormCreate事件如下:

procedure TForm1.FormCreate(Sender: TObject);
begin
  // 画亮绿色的正方形演示框
  Image1.Canvas.Brush.Color:=clBlack;
  Image1.Canvas.FillRect(Rect(0,0,199,199));
  Image1.Canvas.Pen.Color:=cllime;
  Image1.Canvas.Rectangle(0,0,199,199);
  DoubleBuffered := True;
end;

    接着放入一个Timer实现点的绘制以及π的计算:

procedure TForm1.Timer1Timer(Sender: TObject);
var
  a,b,i,ii:longint;
  pi,piok:single;
begin
  // 随机产生坐标点
  i:=random(200);
  ii:=random(200);

  if (i*i+ii*ii<40000) then
  begin
    // 以200为半径的圆内的点设为蓝色
    Image1.canvas.Pen.Color:=claqua;
    a:=StrToInt(Label1.Caption);
    Label1.Caption:=IntToStr(a+1);
    //显示当前点的坐标
    Label6.Caption:=IntToStr(Image1.Canvas.PenPos.X);
    Label7.Caption:=IntToStr(Image1.Canvas.PenPos.Y);
  end
  else
  begin
    // 超出这个区域的点都在圆外设为黄色
    Image1.Canvas.Pen.Color:=clyellow;
    b:=StrToInt(Label2.Caption);
    Label2.Caption:=IntToStr(b+1);
  end;

  // 画点(长为1像素的直线)
  Image1.Canvas.MoveTo(i,ii);
  Image1.Canvas.LineTo(i,ii+1);

  // 计算pi的值
  pi:=(4*(StrToInt(Label1.Caption))/(StrToInt(Label1.Caption)+StrToInt(Label2.Caption)));
  Label3.Caption:=FloatToStr(pi);
  // Label4显示的是最接近真实pi的值。
  piok:=StrToFloat(Label4.Caption);
  //得出最接近的圆周率值 piok
  if (abs(pi-3.141592653589))<(abs(piok-3.141592653589)) then
    Label4.Caption:=FloatToStr(pi);
end;

    最后加入两个SpeedButton作为开始和暂停按钮,代码分别是Timer1.Enabled:=true;和Timer1.Enabled:=false;。好了,程序这样就完成了,赶快按下F9亲自模拟一下π的计算吧!

三、小结

    虽然程序并没有采用圆周率的算法,但能通过随机数对π进行逼近,而由无数点描成的美妙圆弧让我们叹为观止。其实,这样的思想可以用于许多场合,比如对某个数学定理或者自然规律(彩票?)进行模拟,希望这样的思路对您有所启发。


 

 

上下文章:

 

上一篇文章: Delphi初学者参考 下一篇文章: Delphi数据库应用程序中常见错误

相关文章:

  • 编写一个接受变量的存储过程
  • 存储过程编写经验和优化措施
  • Delphi中的Access技巧集
  • 使用C#编写DES加密程序的framework
  • Visual C#编写3D游戏框架示例

相关软件:

  • All AHM Triton Tools 2002 Borland Delphi V7.0
  • 佐尔表达式控件 For DELPHI 7.0 V3.1.12
  • Delphi Project Launcher V1.5
  • Delphi 5.0 完整汉化版
  • PS模拟器 2.2
  • FC模拟器 V2.0

 

快速导航

  • 网络学院
  • 精品汇聚
  • 字体下载
  • 教程下载
  • ASP源码
  • PHP源码
  • Net源码
  • JSP 源码

编程技术分类导航

  • ASP & ASP.NET教程
  • PHP教程
  • JSP教程
  • C/C++教程
  • VB & VB.NET教程
  • VC教程
  • Delphi教程
  • BCB教程
  • VFP教程
  • PB教程
  • JAVA教程
  • XML教程
  • C#教程
  • CGI教程

本类经典文章推荐

  • Delphi的两个实用技巧(1)播放Flash
  • Delphi的两个实用技巧(2)巧用Wind...
  • delphi实例编程之--制作可随处拖放...
  • 关于VisiBroker For Delphi的使用...
  • 关于VisiBroker For Delphi的使用...
  • 关于VisiBroker For Delphi的使用...
  • 在线播放器DIY
  • Delphi让你发送Flash电子邮件
  • 在窗口标题区添加按钮
  • 用Delphi 6编程实现自动标注汉语拼...

Delphi教程阅读排行

  • Delphi7从入门到精通之历数Delphi...
  • Delphi的两个实用技巧(1)播放Flash
  • Delphi7从入门到精通之认识Delphi...
  • delphi实例编程之--制作可随处拖放...
  • Delphi控件,我们也可以(1)
  • Delphi的两个实用技巧(2)巧用Wind...
  • 在线播放器DIY
  • Delphi控件,我们也可以(2)
  • Spcomm串口控件的例程
  • 用Delphi + DirectX开发简单RPG游...

编程技术阅读总排行

  • VB入门教程之一
  • Java连接数据库实例
  • 第二章 PowerBuilder 入门之创建新...
  • VC++之List Box/Check List Box控...
  • 第一章 什么是PowerBuilder
  • VC++ List Ctrl控件
  • VC++ Combo Box/Combo Box Ex控件
  • 学C++不得不看的一篇文章
  • VB入门教程之二
  • VC++之Button控件

广告位置

字母检索 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 回到顶部

关于我们 | 版权声明 | 免责条款 | 广告联系 | 软件发布 | 下载帮助 | 下载排行 | 网站地图 | 特别鸣谢 | 友情连接

copyright; 2005-2008 D9soft.com 第九软件网 版权所有