求一简单循环(50分)

  • 主题发起人 主题发起人 sohard
  • 开始时间 开始时间
S

sohard

Unregistered / Unconfirmed
GUEST, unregistred user!
向一个数组中插入10个整型数,数值的范围为1..100内的随机数,须考虑不能重复
求解
 
给你个函数
Random()
可带参也可不带,返回的值无参时为0~1的小数,带参时返回一个整数,参数也是一个整数,表示上限
 
简单的可以这样,把生成的数字转换成STRING放到stringlist中去 indexof()处理,当然还可以用list处理
 
随机取不重复的数: http://www.delphibbs.com/delphibbs/dispq.asp?lid=542886
随机取数,排除重复: http://www.delphibbs.com/delphibbs/dispq.asp?lid=3393699
 
//综合楼上的方法
procedure TForm1.Button1Click(Sender: TObject);
var
s: String;
sl: TStrings;
begin
Randomize;
sl := TStringList.Create;
while sl.Count < 10 do
begin
s := IntToStr(Random(100) + 1);
if sl.IndexOf(s) < 0 then sl.Add(s);
end;
ShowMessage(sl.CommaText);
sl.Free;
end;
 
不错不错!学习,偶也写一个
procedure TForm1.Button3Click(Sender: TObject);
var i:integer;
s,tmp:string;
begin
s:='';
i:=0;
while i<10 do
begin
randomize;
tmp:=intToStr(Random(100)+1);
if s='' then
begin
s:=tmp;
i:=i+1;
continue;
end;
if pos(tmp,s)=0 then
begin
s:=s+','+tmp;
i:=i+1;
end;
end;
showmessage(s);
end;
 
共同学习,共同提高嘛!
给楼上的兄弟提点建议:
1. 用Inc(i) 代替 i := i + 1 效率会高些;
2. randomize 可以不放在循环里,运行一次就可以了。
哈哈哈哈 ^_^
 
多人接受答案了。
 
后退
顶部