用随机函数random产生100到1000的随机数,用pascal语言,语句怎么写?

如题所述

random用法:random(x); //注释:x是个正整数
即可随机产生0~x之间的一切整数。而且它是一个函数,不能单独使用。
如a:=random(100);就是随机产生1个0~100之间的数赋给变量a;
但是如果只用random的话不太好。
因为random函数是随机一个数,然后你再次random的时候还是产生那个数。
如果不信,拿下面的程序去运行看看:
program exercise(input,output);
var i,a:longint;
begin
for i := 1 to 10 do
begin
a:=random(100);
write(a,' ');
end;
end.
打出来的10个数肯定都是一样的
所以,pascal为了解决这个问题,有一个和random配套的过程randomize
这个randomize是单独使用的(因为是个过程);
它可以解决random的问题,你可以拿如下的程序去验证:
program exercise(input,output);
var i,a:longint;
begin
randomize;(注意!randomize最好在开头输入)
for i := 1 to 10 do
begin
a:=random(100);(random照常使用)
write(a,' ');
end;
end.
这个程序运行之后打出来的数就是10个不同的0~100之间的数了!所以一般在随机产生数的时候,都要加上randomize不然都是一样的数就不好了。

那么你的要求,这个语句就改为
randomize;
a:= random(900) + 100 ;

就好了
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-09-28
writeln( 100 + random(901) );
纠正一下,random(x)生成的是属于[0~x-1]的整数的随机数,另外randomize是初始化随机因子,一般与时间有关,及randomize,会让随机因子变为只与时间有关系的数,所以不要在很接近的时间里使用randomize,否则会出错,即让多个随机数完全相同。
第2个回答  2011-09-29
random(1000-100)+100
由于random产生的是0~上限 的整数,所以把范围先往下移100,得到结果后再向上移100(加100)。本回答被提问者采纳
第3个回答  2012-02-29
其实是
randomize;
(变量名)=random(900)+100;
第4个回答  2011-09-28
res = round(100 + random(901));
相似回答