У вас массив не генерируется. Вы зря выбираете только различные. Или уж делайте через set.
И там ошибка: например при вызове generate_array(100, 0,20) внутренний цикл (7..8) станет бесконечным.
Да и в перестановке элементов (19) техническая ошибка.
from random import randint
def gen_mass(n=25,a=0,b=1000):
arr=set()
if n<1: return arr
while len(arr)< min(n,b-a):
arr.add(randint(a,b))
return list(arr)
spis=gen_mass(30)
print(spis)
for i in range(len(spis)-1):
for j in range(i+1,len(spis)):
if spis[i] spis[i],spis[j]=spis[j],spis[i]
print(*spis)