1. 自动随机出题 你也许有这样的经历:孩子刚上学,数学老师要你每天给出10或者20道算术题,作为你孩子的家庭作业,
你是否有点烦?别着急,电脑可帮你忙! 在Delphi中,有一随机函数,是这样定义的: function Random [ ( Range: Integer) ]; 其中,参数Range为一整数, 该函数返回值也为整数,其范围为: 0< =Random(Range)< Range (指定Range) 0< =Random< 1 (不带参数Range) 下面的过程for循环里第一条语句:在屏幕上输出九九表内乘法的随机题;第二条语句: 在屏幕上输出一百以内的加法随机题。稍加修改,增加一些条件语句你即可得到得减法、除法及四则 混合运算的随机题。当然,你也可以直接将结果输出在打印机的画布(Canvas)上,打印给你的孩子做。 procedure TForm1.Button1Click(Sender: TObject);
var
I: Integer; begin Randomize; for I := 1 to 10 do begin Canvas.TextOut(20,I*20, IntToStr(Random(9)+1)+'×'+IntToStr(Random(9)+1)+'='); Canvas.TextOut(220,I*20, IntToStr(Random(100))+'+'+IntToStr(Random(100))+'='); end; end; 2. 随机产生体育彩票号码 时下彩票在全国范围内风行,朋友们买彩票都嫌挑选号码较为头痛,要求我在电脑上想点办法。 我想这无非是产生随机数,于是用Delphi的随机函数Random编写了一段程序,具体实现方法见如下程序 (SportUnit.pas)。 unit SportUnit; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls; type TForm1 = class(TForm) Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel;//以上用于放置七位号码 BitBtn1: TBitBtn; BitBtn2: TBitBtn; BitBtn3: TBitBtn; Timer1: TTimer; Label8: TLabel; Timer2: TTimer; procedure BitBtn1Click(Sender: TObject); procedure BitBtn2Click(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure BitBtn3Click(Sender: TObject); procedure Timer2Timer(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.BitBtn1Click(Sender: TObject); begin timer1.Enabled:=True; timer2.Enabled:=True; end; procedure TForm1.BitBtn2Click(Sender: TObject); begin timer1.Enabled:=false; timer2.Enabled:=false; end; procedure TForm1.Timer1Timer(Sender: TObject); begin Randomize; Label1.Caption:=IntToStr(Random(10)); Label2.Caption:=IntToStr(Random(10)); Label3.Caption:=IntToStr(Random(10)); Label4.Caption:=IntToStr(Random(10)); Label5.Caption:=IntToStr(Random(10)); Label6.Caption:=IntToStr(Random(10)); //随机产生0-9整数 Label7.Caption:=IntToStr(Random(5)); //随机产生0-4整数,第七位为特别号 Application.ProcessMessages; //处理Windows消息,属简单多线程 end; procedure TForm1.BitBtn3Click(Sender: TObject); begin close; end; procedure TForm1.Timer2Timer(Sender: TObject); begin Label8.Caption:=FormatDateTime('yyyy"年"m"月"d "日"dddd',date)+' '+TimeToStr(time); end; end. 此程序段中的定时器Timer2只为显示时间秒而定义,按钮 BitBtn1和 BitBtn2可以只用一个 (求逆反运算即可),所以该程序段还可优化精简。