There is a Bash variable called RANDOM. Every time you read it, its value is a different random integer between 0 and 32767 (inclusive). Not a wide range, but it may suffice.
You can seed the random sequence by assigning a number to RANDOM. I typically use the shell's own pid for this.
Paul--) RANDOM=$$
Paul--) for j in {1..6}; do printf ' %d' $RANDOM; done
16928 18765 4814 6954 3017 31155
Paul--)
Not clear why the shuf is unacceptable. It provides the scaling (which you would otherwise need to do with shell arithmetic), it has a huge range (up to 2^63 - 1), and it executes in a couple of milliseconds. (It can be slow to shuffle a file because it reads the whole file before it picks the lines, but with -i it works a whole lot smarter.)
If you explain what further requirement you have, we might be able to provide a better solution.