1. 程式人生 > >Delphi中隨機函式Random應用兩則

Delphi中隨機函式Random應用兩則

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可以只用一個
(求逆反運算即可),所以該程式段還可優化精簡。