Ciao,

anche noi abbiamo dovuto invertarci un metodo un pò macchinoso e sicuramente non ortodosso per risolvere il problema:

Abbiamo pensato di realizzare una serie (array "ncaso") di numeri random partendo da un numero casuale ed aumentando la serie con un altro valore casuale.
Quando la serie supera il numero max (ad esempio vuoi 31 numeri casuali) sottrai l'ultimo numero generato al numero max (nell'esempio sarà 31) e riparti di lì a sommare.
Nel nostro caso 31 è un numero primo quindi non avevamo problemi di loop (serie numeri 1,4,7,4,7,4,7,ecc fino a 31)
Se dovessi avere problemi di quel tipo fai un controllo che il numero generato non sia già presente nell'array e se c'è incrementi di 1.

Questo il codice AS

// Genero il primo numero casuale
var casostart:Number = random(numeroimm)+1;
var caso:Number = casostart
// Incremento la serie con un numero casuale
var serie:Number = random(18)+3;
// Popolo l'Array con 30 numeri non ripetitivi
for (i=1; i<numeroimm; i++) {
if ((caso+serie)>=numeroimm) {
var numero:Number = caso+serie-numeroimm;
caso = numero;
ncaso[i]=caso;
} else {
var numero:Number = caso+serie;
caso = caso+serie;
ncaso[i]=caso;
}
}

Spero possa esserti utile!

il codice lo abbiamo utilizzato per posizionare 30 icone in maniera random (vd: www.openbuildingresearch.com)