|
Delphi 7 中的隨機(jī)函數(shù) 1、RandSeed: 隨機(jī)數(shù)發(fā)生的“種子”。如果不賦值那么每次執(zhí)行產(chǎn)生的隨機(jī)數(shù)列是一樣的。 所以該值必須每次調(diào)用均應(yīng)是不同值。 如: unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm1 = class(TForm) Button1: TButton; Label1: TLabel; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1; i:Integer; //定義一個(gè)全局變量i implementation{$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin i:=1; //初始化i end; procedure TForm1.Button1Click(Sender: TObject); begin Randseed:=i+10; //每次點(diǎn)擊按鈕均重新定義隨機(jī)數(shù)種子 i:=Random(100); label1.Caption:=IntToStr(i); end;end. 2、Randomize: 用當(dāng)前機(jī)器時(shí)間作為隨機(jī)數(shù)“種子”初始化隨機(jī)數(shù)發(fā)生器。 3、Random(): 由“種子”初始化的隨機(jī)數(shù)出發(fā),開(kāi)始產(chǎn)生隨機(jī)數(shù)序列。 真隨機(jī)數(shù)生成方法: Randomize方法: var i:Integer; begin Randomize; i:=Random(100); label1.Caption:=IntToStr(i); end; 用當(dāng)前機(jī)器時(shí)間作為“種子”初始化隨機(jī)數(shù)發(fā)生器來(lái)生成(0-100)之間的隨機(jī)數(shù),每次均不同。 1. 自動(dòng)隨機(jī)出題 你也許有這樣的經(jīng)歷:孩子剛上學(xué),數(shù)學(xué)老師要你每天給出10或者20道算術(shù)題,作為你孩子的家庭作業(yè),你是否有點(diǎn)煩?別著急,電腦可幫你忙! 在Delphi中,有一隨機(jī)函數(shù),是這樣定義的: function Random [ ( Range: Integer) ]; 其中,參數(shù)Range為一整數(shù), 該函數(shù)返回值也為整數(shù),其范圍為: 0< =Random(Range)< Range (指定Range) 0< =Random< 1 (不帶參數(shù)Range) 下面的過(guò)程for循環(huán)里第一條語(yǔ)句:在屏幕上輸出九九表內(nèi)乘法的隨機(jī)題;第二條語(yǔ)句:在屏幕上輸出一百以內(nèi)的加法隨機(jī)題。稍加修改,增加一些條件語(yǔ)句你即可得到得減法、除法及四則混合運(yùn)算的隨機(jī)題。當(dāng)然,你也可以直接將結(jié)果輸出在打印機(jī)的畫布(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. 隨機(jī)產(chǎn)生體育彩票號(hào)碼 時(shí)下體育彩票在全國(guó)范圍內(nèi)風(fēng)行,朋友們買彩票都嫌挑選號(hào)碼較為頭痛,要求我在電腦上想點(diǎn)辦法。我想這無(wú)非是產(chǎn)生隨機(jī)數(shù),于是用Delphi的隨機(jī)函數(shù)Random編寫了一段程序,具體實(shí)現(xiàn)方法見(jiàn)如下程序(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;//以上用于放置七位號(hào)碼 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)); //隨機(jī)產(chǎn)生0-9整數(shù) Label7.Caption:=IntToStr(Random(5)); //隨機(jī)產(chǎn)生0-4整數(shù),第七位為特別號(hào) Application.ProcessMessages; //處理Windows消息,屬簡(jiǎn)單多線程 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. 此程序段中的定時(shí)器Timer2只為顯示時(shí)間秒而定義,按鈕 BitBtn1和 BitBtn2可以只用一個(gè)(求逆反運(yùn)算即可),所以該程序段還可優(yōu)化精簡(jiǎn)。 |
|
|
來(lái)自: 區(qū)區(qū)收藏 > 《軟件》