Also, on another note. I was wondering if it was possible if after it picks one option for random to never pick that same option again.
This is a bit trickier - you might need Adventure Cow to do this, rather than Twine, but at the very least, we can simulate some of it. Let's go back to our original example:
<<if $random == 0>>
[[effect one]]
<<endif>>
<<if $random == 1>>
[[effect two]]
<<endif>>
<<if $random == 2>>
[[effect three]]
<<endif>>
Here, we can nullify effects by marking them as "finished." Here's a sample for the page effect one.
::effect one
<<set $effect_one_finished = true>>
Now we need to hide this effect from showing up again, by changing the original code.
<<if $random == 0>>
<<if $effect_one_finished>>
Effect one already happened.
<<else>>
[[effect one]]
<<endif>>
<<endif>>
<<if $random == 1>>
... need to change this
[[effect two]]
<<endif>>
<<if $random == 2>>
... need to change this
[[effect three]]
<<endif>>
What just happenedFirst, there is a new variable, $effect_one_finished, that we see if the effect one has happened already (on the page effect one). If $random is 0 again, we'll check to see if the effect has already happened first (that's the if inside the other if).
Note that while this makes the effect stop happening more than once, it doesn't do what we probably want, which is to hide the used up effect and just select among the others. That's a problem you would likely need custom macros for.