Pascal用random随机生成52个整数,怎样不重

来源:百度知道 编辑:UC知道 时间:2024/06/08 00:25:11

const
max=10000;
var
i,n:integer;
num:array [1..52] of integer;
flag:array [1..max] of boolean;
begin
randomize;
fillchar(flag,sizeof(flag),false);
for i:=1 to 52 do
begin
repeat
n:=random(max)+1;
until not flag[n];
num[i]:=n;
flag[n]:=true;
end;
end.

**************************************
var a:array[1..1000]of longint;
var j,i:longint;f:boolean;
begin
i:=1;
while i<52 do begin
f:=true;
a[i]:=random(100);
for j:=1 to i-1 do
if a[i]=a[j] then f:=false;
if f then inc(i);
end;
for j:=1 to i do
writeln(a[j]);
end.
**************************************
可能有点错误,改一下就行了

boolean数组判重

用个布尔数组记录~~

用哈希表判重,再弄个函数判断是不是52个了,是的话退出循环,不是的话继续random。

hash判重