Могу предложить следующий способ:
Выбирается некоторое число, взаимно простое с общим числом билет — в данном случае с числом 999999. Выбрать такое число несложно. Далее — первый билет это остаток от деления выбранного числа на общее число билетов, следующий — это остаток удвоенного выбранного числа. И т.д. Приведу пример. Если выбранное число 1 — то получим обычный порядок по возрастанию. Если 2, то — 2,4,6,8… 999998,1,3… Не трудно показать, что такая последовательность будет содержать все возможные варианты.
Плюсы такого подхода:
1) Очень простая генерация следующего варианта
2) Нет проблем с получением последнего билета
Минусы:
1) Это приближенное решение задачи, и получить любую последовательность таким образом не получиться. В частности общее число различных последовательностей = 999999 — [количество чисел < 999999 и не взаимно простых с ним].
2) В последовательности можно отследить некоторые закономерности. Так, например, номер каждого 3-го билета будет кратен 3-м.