The best is design to use arrays instead of handcooked variable names, hence Bayou's answer is what you're looking for.
Now, the way to expand variables the name of which is in another variable, exists in Bash (without using eval) and is called indirect expansion. You'll find some information about this in the Shell Parameter Expansion section of the reference manual.
In your case it will look like this:
for i in {1..3}; do
# You need to create an auxiliary variable with the name of the variable to expand
varname=r$i
# Then use the indirect expansion (it's prefixed with an exclamation mark)
echo "${!varname}"
done
This is considered poor practice and should be avoided whenever possible: the better design is to use arrays.
Just another comment about the way of creating variables without using eval is to use declare or printf. Here's how it goes with printf:
for i in {1..3}; do
printf -v "r$i" "%d" "$((RANDOM % 10))"
done
echo "${r[$z]}"?to call them-> yea mean "to get their value"?