delphi random_Delphi 7 中的随机函数

Delphi 7 中的随机函数

1、RandSeed:

随机数发生的“种子”。如果不赋值那么每次执行产生的随机数列是一样的。 所以该值必须每次调用均应是不同值。

如:

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; //定义一个全局变量i

implementation{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);

begin

i:=1; //初始化i

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

Randseed:=i+10; //每次点击按钮均重新定义随机数种子

i:=Random(100);

label1.Caption:=IntToStr(i);

end;end.

2、Randomize:

用当前机器时间作为随机数“种子”初始化随机数发生器。

3、Random():

由“种子”初始化的随机数出发,开始产生随机数序列。

真随机数生成方法:

Randomize方法:

var

i:Integer;

begin

Randomize;

i:=Random(100);

label1.Caption:=IntToStr(i);

end;

用当前机器时间作为“种子”初始化随机数发生器来生成(0-100)之间的随机数,每次均不同。

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可以只用一个(求逆反运算即可),所以该程序段还可优化精简。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值