delphi小小问题

来源:百度知道 编辑:UC知道 时间:2024/09/22 07:04:04
写了个delphi随机选红号的小程序,已经完成,但是现在还有几个小问题,请教高手

以下是源码:
procedure TForm1.Button1Click(Sender: TObject);
var
aaa:array[1..6] of integer;
i,j,n: integer;
s: integer;
begin
edit1.Text:='';//clear edit1的text;
randomize;
//先用随机数初始化数组;
for i:=1 to 6 do
begin
aaa[i]:=1+random(33);
end;
for i:=1 to 5 do
begin
for j:=i+1 to 6 do
begin
if aaa[i]=aaa[j] then
begin
n:=0;
aaa[j]:=1+random(33);
for s:=1 to i do
begin
if aaa[j]=aaa[s]
then n:=n+1;
end;
until n=0;//直到n=0即无重复才跳出repeat语句.
end;
end;
end;
//下面将数组逐个输出
for i:=1 to 6 do
edit1.Text:=edit1.Text+' '+inttostr(aaa[i]);
end;
end.

一:想实在edit1.Text中输出的6个红号按递增排列,还是输出到edit1.Text中

二:希望能同时生成几组随机数,好比同时生成edit1.Text edit2.Text edit3.Text 三个或者更多,全部随机,但不要几组完全一样!!

三:能够过滤掉33个号码中的一些号码,然后在剩下的号码中依然随机选择,象上面那样递增输出到几个edit.Text中

应该不难

//数组类型
type
Ta = array [1..6] of Integer;

procedure CreateData_(var aaa : Ta);
const
Num = 2; //个数根据需要定
var
bbb:array[1..Num] of integer; //筛选数组
i,j,n,k: integer;
s: integer;
begin

bbb[1]:=2; //要过滤的数值
bbb[2]:=5;

randomize;
//先用随机数初始化数组;
for i:=1 to 6 do
begin
repeat
n:=0;
aaa[i]:=1+random(33);
for s:=1 to Num do
begin
if aaa[i]=bbb[s] then n:=n+1;
end;
until n=0;
end;

//下面是关键的部分,消去相同的数;

{ 前面的两个for语句是先用aaa[1]同aaa[2]到aaa[30]比较看有不有重复的数接着
再用aaa[2]与aaa[3]到aaa[30]比较看有无重复,一直到aaa[29]与aaa[30]比较完毕;}

for i:=1 to 5 do
begin
for j:=i+1 to 6 do
begin
if aaa[i]=aaa[j] then
begin
{下面这一部分是,如果在上面的比较过程