为什么不能生成我需要的随机数?(100)

  • 主题发起人 主题发起人 dpianyi
  • 开始时间 开始时间
D

dpianyi

Unregistered / Unconfirmed
GUEST, unregistred user!
我需要生成一组不重复的随机数,用了洗牌算法,但最后得到的结果中有一个莫名其妙的数字,代码大意如下:procedure TForm1.BitBtn1Click(Sender: TObject); var c,d,e,g:integer; k:array of integer;begin SetLength(k,7); for c := 1 to 7 do k[c]:=c; randomize; for c := 1 to 7 do begin d:=1+random(7); e:=k[c]; k[c]:=k[d]; k[d]:=e; end; for c := 1 to 7 do showmessage(inttostr(k[c]));end;我的原意是从1-7这7个数字随机生成不重复的一组数字,如5、3、1、4、2、6、7,但在最后的跟踪结果里,总会生成这样的结果4、6、5、1、2、7、9780796,不知这个9780796是怎么得来的,应该如何避免。
 
难道是从0开始,不是从1开始????
 
随即种子每次使用要初始化
 
k:array of integer;其下标是0-6, k[7]已经出界
 
哎,这种问题...动态数组,下标是从0开始,到上限减一之间的标号。楼主已经越界访问了。
 
后退
顶部