怎的 编写一个程序 可以使之读出随机文件

怎样 编写一个程序 可以使之读出随机文件
经典的从 10道题中随机选出4道题
我写的是 1、将10道题存入数组t[10] 并存入文件test.txt 
        2、随机选出1到10 中的 4个数,存入另一数组a[10](使之做为下标)
        3、读出test.txt文件,输出 t[a[i]]
但是由于读文件时是顺序读取,所以会出问题。。。。
求指点,如何可以随机读出4道题

------解决方案--------------------
把你的程序代码贴出来吧.
你的思路没有问题.
顺序读取题目到数据t中. 然后再随机出索引读取.
------解决方案--------------------
文本模式得按序读入,起码要读要最大的随机编码。数据量大的话考虑用2进制模式,自己制定一个格式头,记录每笔数据的偏离值和大小,那么就可以随机读取...
------解决方案--------------------
洗牌算法参考下面:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int d[6];
int i,n,a,b,t;
int c,j;
void main() {
    srand(time(NULL));
    printf("shuffle 0..n-1 demo\n");
    for (n=1;n<=5;n++) {/* 测试1~5个元素 */
        printf("_____n=%d_____\n",n);
        j=1;
        for (c=1;c<=n;c++) j=j*c;/* j为n! */
        j*=n*2;
        for (c=1;c<=j;c++) {/* 测试n*2*n!次 */
            for (i=0;i<n;i++) d[i]=i;/* 填写0~n-1 */
            for (i=n;i>0;i--) {/* 打乱0~n-1 */
                a=i-1;b=rand()%i;
                if (a!=b) {t=d[a];d[a]=d[b];d[b]=t;}
            }
            printf("%04d:",c);
            for (i=0;i<n;i++) printf("%d",d[i]);
            printf("\n");
        }
    }
    printf("shuffle 1..n demo\n");
    for (n=1;n<=5;n++) {/* 测试1~5个元素 */
        printf("_____n=%d_____\n",n);
        j=1;
        for (c=1;c<=n;c++) j=j*c;/* j为n! */
        j*=n*2;
        for (c=1;c<=j;c++) {/* 测试n*2*n!次 */
            for (i=1;i<=n;i++) d[i]=i;/* 填写1~n */
            for (i=n;i>1;i--) {/* 打乱1~n */
                a=i;b=rand()%i+1;
                if (a!=b) {t=d[a];d[a]=d[b];d[b]=t;}
            }
            printf("%04d:",c);
            for (i=1;i<=n;i++) printf("%d",d[i]);
            printf("\n");
        }
    }
}