电竞比分网-中国电竞赛事及体育赛事平台

分享

Delphi 7 中的隨機(jī)函數(shù)

 區(qū)區(qū)收藏 2020-09-23
 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)。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多