关于怎样随机出现不重复数字的有关问题,有代码,多谢

关于怎样随机出现不重复数字的问题,有代码,谢谢!
我做的一个数字滚动器用来幸运抽奖,请问如果让出现过的数字不再出现,应该怎样改代码,请大家帮忙看看,谢谢!
用在联欢会的幸运抽奖,每个人手上都有一个号码,从1-200,FORM1上有个button,有人喊停的时候就按一下BUTTON,就在FORM上停留一个数字,我要求数字不要重复出现,避免一个人得两次奖。急呀,明天就开了,我就这10分,谢谢!

procedure   TForm1.Timer1Timer(Sender:   TObject);
begin
    Randomize;
    Label1.Caption:=IntToStr(Random(200));
end;


procedure   TForm1.BtnBEClick(Sender:   TObject);
begin
    Timer1.Enabled   :=   not   Timer1.Enabled;
          if   Timer1.Enabled   then
                  BtnBE.caption   :=   停止 '
          else
                  BtnBE.caption   :=   '开始 ';
end;


------解决方案--------------------
产生不重复随机数的简便算法 来源:互联网。

产生不重复随机数的算法能够解决诸如随机洗牌,抽彩等问题,在网上的一些算法自觉较繁,现给出简单的算法。以下源程序为1..36个数字,随机排列,产生不重复随机数。
var aa : array[1..36] of string[2]; //aa数组为需要随机排列的数组,
{先把1..36按顺序给aa数组赋值}
procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
begin
for i:=1 to 36 do begin
aa[i]:=inttostr(i);
bb[i]:=inttostr(i);
end;
end;
{随机进行排列}
procedure TForm1.Button1Click(Sender: TObject);
var i,j:integer; swapa:string[2];
begin
randomize;
for i:=1 to 36 do begin
j:=1+random(36);
swapa:=aa[i];
aa[i]:=aa[j];
aa[j]:=swapa;
end;
end; //由此得到不重复的随机排列数字
------解决方案--------------------
2月8日已经开奖了,我现在再回答也无用了。
------解决方案--------------------
-_-~!!! 只是给你一个思路而已......

并不是在替你做程序员.....

点Button生成一个随机数,即写入一个数组,再Button生成一个随机数,先查一查数组里有没有重复....
------解决方案--------------------
var
sRdm: string = ' ';
sGeted: string = ', ';

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Randomize();
sRdm := IntToStr(Random(200) + 1);
if Pos( ', ' + sRdm + ', ', sGeted) = 0 then
Label1.Caption := sRdm;
end;

procedure TForm1.BtnBEClick(Sender: TObject);
begin
Timer1.Enabled := not Timer1.Enabled;
if Timer1.Enabled then
begin
BtnBE.caption := '停止 ';
sGeted := sGeted + sRdm + ', ';
end
else BtnBE.caption := '开始 ';
end;

end.
==
效率不高,试一下如何
------解决方案--------------------
.......

最基本的代码

简单的桶赛选啊
开一个tf: array[1..1000000] of boolean的数组
如果先内存太大,可以考虑用楼上的
radomsize;
t:=random(1000000);;
if tf[t]=false then
begin
//你要的代码
end;
------解决方案--------------------
虽然有点晚,还是贴上自己的一个想法,供大家参考交流!

基本思路是:先初始化一个要选择随机数范围加1的数组,其中a[0]保存可用的随机数的个数,然后在a[0]范围内随机选取一个数,并把这个数与数字后面的数向交换,并将a[0]减1,直到最后全部取完,数组保存的是所取随机数顺序的倒序.

定义常量和变量
const
NUM_COUNT = 10;

var
a: array[0..NUM_COUNT] of Integer;

初始化
var
i: Integer;
begin
a[0] := NUM_COUNT;
for i:=1 to NUM_COUNT do
a[i] := i;
end;

得到不重复随机数,全部取完返回-1
function GetRandom: Integer;
var
res, tmp: Integer;
begin
if a[0] = 0 then
begin