Delphi中隨機函式Random應用兩則
阿新 • • 發佈:2019-01-07
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可以只用一個 (求逆反運算即可),所以該程式段還可優化精簡。