Ваша таблица значений не соответствует тому, что вы просили. В этом примере вы используете 9999 значений результатов (1-9999) для 10000 входных значений. В тексте вы говорите 10000 выходных значений (0-9999).
Вот то, что я думаю, вы действительно просите. Этот алгоритм выдаст 1-9999, а затем снова переключится на 1.
Другими словами, это решение будет предоставлять четырехзначное ненулевое значение:
$result = $int % 9999 + 1;
Вывод НЕ будет соответствовать вашему примеру, так как в вашем примере он перебирает каждые 10000 значений, а не 9999. Вот вывод:
input output
0 1
1 2
.... ....
9997 9998
9998 9999
9999 1 <--- 9999 * 1
10000 2
.... ....
19996 9998
19997 9999
19998 1 <--- 9999 * 2
19999 2
.... ....
19995 9998
19996 9999
19997 1 <--- 9999 * 3
19998 2
.... ....