大伙请进,求个随机数组算法

大家请进,求个随机数组算法。
现在有一百个数
1 2 3 4 5 6 7 8 9 10 .....100
想求个算法能够生成随机顺序
2 3 5 1 8 9 7 6 10 4 ......97 

如果生成两次随机顺序的话,第二次随机后的每个数的顺序不能够和第一次的一样。
至少随机四次不能跟前一次一样

比如 第一次随机后2 排到了 第一
那么第二次 2 就不能在排到第一 ,至少四次随机计算不能排到第一的位置。

这个该如何用delphi如何写,或者说说原来也行。能写出代码当然最好了。

谢谢。

------解决方案--------------------
提供思路:你写一个函数RandomEx(n,Max:integer)一次随机出n个各不相同的max以内的数。
n为你要得到多少组随机顺序。 

RandomEx(4,100);当然在添加入随机顺序时检查是否跟之前有重复,重复则放弃,一直到添加100个数
------解决方案--------------------
好像楼上的效率会很低。
如果不要求真的随机的话,可以把数字随机分成若干包含4个以上数字的组,每个组分配若干位置,每个数字依次出现在分配给这个组的位置,就不会重复了。
------解决方案--------------------
随机好办,洗牌算法就行了

与上4次不一样,有点特别了
需要保存前4次的结果,比较,如果有一样就重新洗牌
------解决方案--------------------
需要保存前4次的结果,比较,如果有一样就重新洗牌
——简单,当时效率(一样的次数)就不知道了。因为每个数的位置都不一样,说不定挺难,要试了了才知道
------解决方案--------------------
引用:
这是高考分配监考教师用的,一共四场考试。每场考试,监考教师都不能相同。

那用我说的吧,随机分配5人一组,一组分配5个考场,这样就不会重复了。