вобще говоря, мне часто приходилось сталкиваться с подобными задачами, поэтому я давно для себя написал универсальный класс.

Код:
Object.prototype.RND=function(obj) {
this._rnd=new Array();
this._obj=obj;
this.randomize=function() {
if(this._obj!=undefined&&this._obj.__proto__==Array.prototype) {
delete this._rnd;
this._rnd=new Array();
var len=this._obj.length;
this.length=len;
for(var i=0;i<len;i++) {
this._rnd[i]=this._obj[i];
}
}
}
this.random=function() {
var len=this._rnd.length;
this.length=len;
if(len!=0) {
var n=random(len);
var temp=this._rnd[len-1];
this._rnd[len-1]=this._rnd[n];
this._rnd[n]=temp;
return this._rnd.pop();
} else {
return null;
}
}
ASSetPropFlags(this,null,7);
this.randomize();
}
все что нужно вставить в первый кадр ролика.
значит как работать, все просто:
есть массив со значениями, которые необходимо случайно выбирать с условием уникальности выбора. притом что значения массива могут быть любого типа :)
ну например:
values=["string",2,3,6,7,"c",8];
далее создаем обьект:
myRandom=RND(values);
для случайного и уникального выбора значения:
myVar=myRandom.random();
когда выбор будет исчерпан, функция будет возвращать null
для восстановления набора значений:
myRandom.randomize();
узнать сколько осталось "нетронутых" значений:
myRandom.length
пример:

Код:
values=[1,2,3,4,5,6,7,8,9];
trace("-== 1-st set ==-");
myRandom=new RND(values);
while(myRandom.length) {
trace(myRandom.random());
}
trace("-== 2-st set ==-");
myRandom.randomize();
while(myRandom.length) {
trace(myRandom.random());
}
:)