请问如何用随机的顺序,访问一个数组的每个元素?(100分)

定义一个临时数组就可以了
原理是反源数据的数据Copy到临时数组中
每次用Random取得临时数据的长度
每取得一次Random数,临时数组的长度就减1(当然所取位后的数就向前移一位),

代码写是很简单的,所以自己写好了
 
有人测试了上面哪个写的可行?
 
我做的一个小抽奖的程序,是随机产生从几组号内出数据。很简单的,有兴趣留个地方,发给你看一下
 
真纳闷,为什么不用pascal与生俱来的集合运算。
此类问题,用集合筛选下标很方便的,不用那么复杂。
 
delphi的魅力就在于TstringList
 
不过集合方法也有缺陷,下标数不能超过256个。
 
设数组长9
第一次取一个9内的随机数,把最后一个(如不是被选中的)填到你选中的那个位置
第二次取一个8内的随机数.......................
 
//可以将arr的值看作下标,你改改吧
procedure TForm1.Button1Click(Sender: TObject);
var
i, j: integer;
rndm: integer;
arr: array[0..8] of integer;
str: string;
begin
for i := 0 to 8 do
begin
arr := 0;
end;
i := 0;
randomize;
repeat
rndm := Random(10);
if rndm = 0 then
continue;
for j:=0 to 8 do
if rndm = arr[j] then
break;
if j=9 then
arr := rndm
else
continue;

i := i+1;
until i>8;

str := '';
for i := 0 to 8 do
begin
str := str+inttostr(arr)+' ';
end;
memo1.Lines.Add(str);
end;
 
同意用Radom()
 

Similar threads

顶部