以下是引用wp231957在2014-3-6 19:57:09的发言:
才细看了一下楼主的要求 他是8863对应8863 只不过是不对号入座而已
这个应该好弄了 弄一个踢一个就好了
你踢下看看
才细看了一下楼主的要求 他是8863对应8863 只不过是不对号入座而已
这个应该好弄了 弄一个踢一个就好了

坚守VFP最后的阵地
程序代码:#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
srand((unsigned)time(NULL));
int t[8863]={0}; //因c里没有dbf 所以用这个数组代表原始数字表
int t2[8863]={0}; //这个用于存放随机的1--8863的数列 也是8863个 而且各不相同 只不过顺序被打乱
int i;
for(i=0;i<8863;i++) t[i]=i+1; //将原始数字表初始化为1--8863的递增为1的顺序数列
for(i=0;i<8863;i++)
{
rep: //@1
int ch=rand()%8863;
if(t[ch]!=0)
{
t2[i]=t[ch];
if(i%14==0 && i>0) printf("\n"); printf("%6d",t2[i]); //这个是用于屏幕输出的语句 每行输出14个 每个数字宽度为6
t[ch]=0; //选中数据后 立即在原始数字表中置 0 以便下次挑选时 把他pass
}else goto rep; //@2 此处与@1 构成小循环 专门踢重复数据
}
printf("\n");
return 0;
}大约5-7秒钟左右吧 运行结束 肯定不超过10秒
程序代码:
CLEAR ALL
SET SAFETY OFF
CLEAR
CREATE TABLE test FREE (hs I, rec I)
SELECT "test"
RAND(-1)
FOR nIndex = 1 TO 8863
INSERT INTO test (rec, hs) VALUES (ROUND(1000000 * RAND(), 0), nIndex)
NEXT
SORT TO test_rand ON rec
USE "test_rand" EXCLUSIVE
BROWSE
USE IN "test_rand"
CLEAR ALL
RETURN
