Странные ответы тут приводят.
import random
lst = list(range(1, 5+1))
random.shuffle(lst)
Так у вас в списке будет случайно перемешанная последовательность.
Но у вас есть требование (не знаю насколько оно осозанное), чтобы это была непременно функция.
Надо понимать, что такая функция не будет чистой. Она должна выдать конечное количество разных значений и её придётся вернуть исключение, если от нее потребуют больше очерендым вызовом. Сделать это можно с помощью генератора.
def make_shuffled_gen(a, b):
lst = list(range(a, b + 1))
random.shuffle(lst)
yield from lst
shuffled_getter = make_shuffled_gen(1, 5).__next__
Ну или одним выстрелом:
def make_shuffled_getter(a, b):
lst = list(range(a, b + 1))
random.shuffle(lst)
return iter(lst).__next__
shuffled_getter = make_shuffled_getter(1, 5)