procedure TForm1.Button1Click(Sender: TObject);
var
i,n,x:byte;
Num,tmp:array[1..54]of byte;
begin
for i:=low(tmp) to high(tmp) do
tmp[i]:=i;
Randomize;
i:=54;
n:=0;
Memo1.Text :='';
while i>1 do
begin
x:= Random(i);
if tmp[x]>0 then
begin
inc(n);
Num[n]:=tmp[x];
tmp[x]:=tmp[i];//把最后一位放到当前位置
tmp[i]:=0;
dec(i);
Memo1.Lines.Add(format('%d %d',[n,Num[n]]));
if i=1 then
begin
inc(n);
Num[n]:=tmp[i];
Memo1.Lines.Add(format('%d %d',[n,Num[n]]));
end;
end;
end;
Memo1.Lines.Add('搞定');
end;
for j := 0 to 79 do
begin
// 随机取出一张牌
Index := Random(80);
// 开始交换数据
tmp := Card[j]; // 把当前的牌临时存放,以便交换
// 当前(j)的牌与随机取出的牌(Index)不一样的时候
// 用随机取出的牌与当前的(j)的牌交换
if Card[j] <> Card[Index] then
begin
Card[j] := Card[Index];
Card[Index] := tmp;
end;
end;
end.
procedure TForm1.myarray(sender: TObject);
type
card:record
number:integer;
picture:integer;
end;
var i,t:integer;
a:array[0..59] of card;
b:array[0..53] of card;
begin
for i:0 to 53 do
begin
a[i].number:=(i mod 13)+1;
a[1].picture:=(i div 13)+1;
end;
i:=0;
repeat
t:=random(53);
if not (a[t].number=0) then
begin
i:=i+1;
b[i-1]:=a[t];
a[t].number:=0;
end;
until i=60;
for i:=0 to 53 do
begin
paintmycard(b[i])
end;
end;