[pascal]产生1-40之间不重复的随机数

要求产生1-40之间的随机数,包括1和40,注意是不能重复!用PASCAL做... 要求产生1-40之间的随机数,包括1和40,注意是不能重复!用PASCAL做 展开
 我来答
Oo墨色倾城oO
推荐于2016-04-07 · TA获得超过239个赞
知道答主
回答量:46
采纳率:0%
帮助的人:43万
展开全部
我采用的是用随机函数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中。
爱伦Dm
2009-05-14 · 超过11用户采纳过TA的回答
知道答主
回答量:41
采纳率:0%
帮助的人:0
展开全部
简单好用,推荐!
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.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
甄如冬bs
2009-05-17
知道答主
回答量:36
采纳率:0%
帮助的人:18.5万
展开全部
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.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友6fa3859
2009-05-11 · TA获得超过3349个赞
知道小有建树答主
回答量:1148
采纳率:85%
帮助的人:431万
展开全部
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可以改变个数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式