[pascal]产生1-40之间不重复的随机数
4个回答
展开全部
我采用的是用随机函数random的办法,加上一些修饰。 随机函数randdom(x)的作用是随机取0~x-1中的数。
var a:array[1..40]of integer;
i,j,k,s:integer;
begin
i:=0;
repeat
k:=random(41); s:=0;
if k<>0 then
begin
if i<>0 then
begin
for j:=1 to i do
if a[j]<>k then inc(s);
end;
if s=i then begin
inc(i); a[i]:=k; end;
end;
until i=40;
end.
此过程结束后既产生了40个随机不重复的数存放在数组a中。
var a:array[1..40]of integer;
i,j,k,s:integer;
begin
i:=0;
repeat
k:=random(41); s:=0;
if k<>0 then
begin
if i<>0 then
begin
for j:=1 to i do
if a[j]<>k then inc(s);
end;
if s=i then begin
inc(i); a[i]:=k; end;
end;
until i=40;
end.
此过程结束后既产生了40个随机不重复的数存放在数组a中。
展开全部
简单好用,推荐!
var a:array [1..40] of boolean;
i,s:longint;
begin
randomize;
for i:=1 to 40 do begin
repeat
s:=random(40)+1
until not a[s];
a[s]:=true;
writeln(s);
end;
end.
var a:array [1..40] of boolean;
i,s:longint;
begin
randomize;
for i:=1 to 40 do begin
repeat
s:=random(40)+1
until not a[s];
a[s]:=true;
writeln(s);
end;
end.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
program p1;
var
i,j,n,x:integer;
a:array[1..100] of integer;
begin
n:=40;{n是可以改的,是个数}
for i:=1 to 100 do a[i]:=0;{标记数组置为0,表示没用过}
for i:=1 to n do
begin
repeat
x:=random(40)+1;
until a[x]=0;{知道产生的数没用过}
a[x]:=1;
writeln(x);{输出}
end;
end.
var
i,j,n,x:integer;
a:array[1..100] of integer;
begin
n:=40;{n是可以改的,是个数}
for i:=1 to 100 do a[i]:=0;{标记数组置为0,表示没用过}
for i:=1 to n do
begin
repeat
x:=random(40)+1;
until a[x]=0;{知道产生的数没用过}
a[x]:=1;
writeln(x);{输出}
end;
end.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Program example;
Const
n=10;
Var
a:array[1..n] of integer;
i,x,temp:integer;
Function find(x:integer):boolean;
var
i:integer;
begin
find:=false;
for i:=1 to n do
if a[i]=x then begin find:=true;exit;end;
end;
Procedure writea;
var
i:integer;
begin
for i:=1 to n do
write(a[i],' ');
writeln;
end;
Procedure selectsort;
var
i,j,k:integer;
begin
for i:=1 to n-1 do
begin
k:=i;
for j:=i+1 to n do
if a[k]>a[j] then k:=j;
if k<>i then begin temp:=a[i];a[i]:=a[k];a[k]:=temp;end;
end;
end;
Begin
randomize;
x:=random(100);
for i:=1 to n do
begin
while find(x) do
x:=random(100);
a[i]:=x;
end;
writea;
selectsort;
writea;
end.
修改n可以改变个数
Const
n=10;
Var
a:array[1..n] of integer;
i,x,temp:integer;
Function find(x:integer):boolean;
var
i:integer;
begin
find:=false;
for i:=1 to n do
if a[i]=x then begin find:=true;exit;end;
end;
Procedure writea;
var
i:integer;
begin
for i:=1 to n do
write(a[i],' ');
writeln;
end;
Procedure selectsort;
var
i,j,k:integer;
begin
for i:=1 to n-1 do
begin
k:=i;
for j:=i+1 to n do
if a[k]>a[j] then k:=j;
if k<>i then begin temp:=a[i];a[i]:=a[k];a[k]:=temp;end;
end;
end;
Begin
randomize;
x:=random(100);
for i:=1 to n do
begin
while find(x) do
x:=random(100);
a[i]:=x;
end;
writea;
selectsort;
writea;
end.
修改n可以改变个数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询