I have no idea why eval() didn't work for you, because it did for me. Sorry.
My tests also turned up something interesting. If you call the random container again, you will get the same original result that was first called.
That's supposed to happen.
As you might have figured out,
-warning, kindergarten teacher mode-
Simplest way I know how to explain this:
With pictures... ;D
Right now, random1-box has no value:#random1[ ]
<renpy.random.choice([1, 2, 3])> spits out a value and then stores it in random1-box:$ random1 = renpy.random.choice([1, 2, 3])
#<renpy.random.choice> -> 1 -> random1
Now, random1-box is 1:#random1
<r.r.choice()> spits out another value and then stores it in random2-box:$ random2 = renpy.random.choice([1, 2, 3])
#3<renpy.random.choice> -> 3 -> random2
Now, random1-box is still 1, but random2-box is now 2:#random1
random1-box does not want to let the value in its box go until the evil del-adventurer takes it away:$ del random1
#random1 now has no value. The value'll probably be sold in the market/on eBay
random1-box does not want to change its value until the evil = sign tells it to again, so if you keep calling on it to raise its number-hand, it will keep raising the 1 until the = sign comes again to tell it to change its number.
Summary: The container (variable) isn't random, the jar it comes out of (renpy.random.choice) is. So if you want random variables every time, you need to do it the long way.