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

相关阅读 >>

Delphi 调用百度地图api

Delphi 将图片压缩后转base64函数

Delphi 用 getenvironmentvariable 获取常用系统环境变量

Delphi 创建一个文本文件

Delphi让listbox实现即指即显功能

Delphi xe android将域名转化为ip

Delphi2010 无法继承窗体的bug

windows关机函数exitwindowsex使用大全(适用windows所有操作平台)

Delphi 用 tbytesstream 类实现的读文件为十六进制字符的函数

字符串截取小例子Delphi源代码

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...