I'm sure that this is an easy thing for programmer-types but it's something that I have always struggled with, never adequately figured out and then always ended up doing things very, very inefficiently, or just giving up.
Basically, I want a repeating script to make a random choice from a limited number of values (easy enough) but once it has done that, the script repeats and it must choose again, but must not pick the value it already picked.
So, what I want is the script to basically be doing random (1,4) and if, for example, it picks 3, the next time it can only choose from 1, 2 and 4 but not 3. I have no idea how to do that.
In the specific case, what I want to happen are 4 random events. For the sake of simplicity, lets just say it's four different dynamic lights being activated (it basically is, but with other associated stuff going on too - sounds, texture changes etc).
The lights can come on in any order but each one must only happen once (because of the other stuff, like the sounds) until all four lights are on. Once all four lights are on, event number 5 needs to happen which is to switch all of the lights off again after a random delay, and then the whole process starts again.
I know how to get a script to pick one random event (use a random variable then get the script to execute whatever is in the relevant if (variable == whatever) {do stuff}, but what I don't know how to do is to have the choice repeat with the reduced choices for the second third and fourth choices before the whole thing zeroes itself and starts the choice process again.
I'm pretty sure that I know how to do the zeroing part too. Just increment a separate variable every time a choice is made and once that variable hits 4 another "if" section can execute to switch all the lights off again and *somehow* tell the random choice thing that all choices are now back on the table.
Could anyone please post a skeleton script that does this? I'll never figure it out on my own because I've literally attempted it on and off for years.

Thank you kindly.

[edit]Oh, and if the answer is "use an array" I'll need taken by the hand through that because arrays are something I have a mental block with. I know they are simple. I've been told lots of times, even by my son. But... mental block![/edit]