Pim_gd's explanation was what I was struggling with. But I think I actually got it now after some rereads.
Basically, you have x number of variables, each set to a name (or charcode, or whatever), called variable_1 to variable_x. You then get a random number between 1 and x using da.random, resulting in y. You call variable_y which does whatever you need it to do, then switch the values of variable_y with variable_x, before you subtract 1 from x, leaving the previous variable_y (now variable_x+1) out of the pool. Repeat until done.
Did I get it right? I guess you could also copy y to a completely different set of variables if you want to so you could call upon variables you know has been used. "Hey, NAME_Y is back for more!", sort of.