如何打乱一个数组的顺序?在线等待...
如何打乱一个数组的顺序?例如有一个数组A
A[0]:='0';
A[1]:='1';
A[2]:='2';
A[3]:='3';
A[4]:='4';
A[5]:='5';
A[6]:='6';
A[7]:='7';
A[8]:='8';
A[9]:='9';
我现在想把这个数组里面的数据打乱变成
A[0]:='7';
A[1]:='0';
A[2]:='4';
A[3]:='6';
A[4]:='2';
A[5]:='9';
A[6]:='1';
A[7]:='3';
A[8]:='5';
A[9]:='8';
如何实现呢?急,在线等待...
[解决办法]
随机数取的数组索引,然后赋值到另一个数组成为新数组
[解决办法]
A是什么类型的数组?
[解决办法]
打乱索引的办法不错。
关于取不重复的随机数,参看大侠们的讨论
http://topic.csdn.net/u/20100420/14/264058f9-ef08-44a9-a7d8-cd55b490255e.html?23057
[解决办法]
[解决办法]
搜索洗牌算法
[解决办法]
1、列放在表,
2、然後取值
select top 10 * from 表 order by newid()
3、在值回。
[解决办法]
简单的办法是:
如果数组是:A: Array [0..500] of string;
不断产生 0..500 之间的两个随机数a,b,然后交换 A[a] 和 A[b]
[解决办法]
这样就不重复了
for iLoop:=0 to ... do
i:=0;
j:=iRandom;//获取随即数
iTmp:=a[i];
a[i]:=a[j];
a[j]:=iTmp;
[解决办法]
[解决办法]
刚才有点问题
i:=0;
for iLoop:=0 to ... do begin
j:=iRandom;//获取随即数
iTmp:=a[i];
a[i]:=a[j];
a[j]:=iTmp;
i:=j;
end;
[解决办法]
[解决办法]
随机数重复了就重新取不就得了。