На ум приходит слишком простой метод, поэтому он явно неверен, однако интересно, в чем ошибка.
Const N%=10;размер массива
Local p%[N],c%[N]
For i=1 To N
p[i]=i;заполним чисилками
Next
;Перемешивание
For i=1 To N
a%=rnd(N)
if c[a]<>1
c[a]=1
p[i]=a
endif
Next
c[a]=0
Подзабыл синтаксис Blitz, однако логика, думаю, понятна.
Или вся фишка в том, что алгоритм устроен без if?