返回一组不同随机数 数组的函数怎么写和调用? ( 积分: 100 )

Z

zyr76

Unregistered / Unconfirmed
GUEST, unregistred user!
我的下列代码可以在点击按钮后在Edit1文本框中生成三个不同的随机数,现在想扩充这个功能,把它转换换函数实现,function RandomX(From,to,number:Integer):array[] of integer;我看了有些帖子实现的方法,但是以过程出现,我现在就想利用函数返回值,请问该函数的写法,以及在其他程序中如何调用返回的随机数?要两个问题一起答哟!
//from: 从几开始取;
//to: 取到几为止;
//number:取几个随机数
//其中:number < to - from, to > from;
//返回一个数组类型,其任何两个元素的值均不相等;
---------我的代码-----------
procedure TForm1.Button1Click(Sender: TObject);
var
i,n:integer;
s:set of byte;//通过比较保存在数组中的随机数,保证产生的随机数不重复
a:array[1..3]of integer;
begin
Edit1.Clear;
randomize;
for i:=1 to 10 do
begin
n:=random(10);
while (n in s) do
begin
randomize;
n:=random(10);
end;
s:=s+[n];
a:=n;
Edit1.text:=Edit1.text+Inttostr(a)+' ';
if i>=3 then break;
end;

end;
 
1.
type
TIntArray = array of Integer;

function TForm1.RanArray(const AFrom, ATo, ACount: Integer): TIntArray;
var
i,j: Integer;
s: set of byte;
begin
Randomize;
SetLength(Result,ACount);
for i := 0 to ACount - 1 do begin
j := Random(ATo) + 1;
while (j in s) or (j < AFrom) do
j := Random(ATo) + 1;
s := s + [j];
Result := j;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
s: TIntArray;
i: Integer;
begin
Memo1.Clear;
s := RanArray(1,20,5);
for i := 0 to High(s) do begin
Memo1.Lines.Add(IntToStr(s));
end;
end;

2.把函数写成 DLL 再通过接口函数传递出来,又或者使用内存共享文件实现。

不过,我本人建议楼主不要使用返回值的方式返回数组
 
接受答案了.
 

Similar threads

顶部