One edited version of @Jeff_Perkinson version, which uses the Remove From return value (it returns the value of removed elements as list). This code might not be as easy to read, but sometimes using the return value from Remove From is useful:
Names Default To Here(1);
theList = {"a", "b", "c", "d", "e", "f", "g", "h", "i", "j"};
While(N Items(theList) > 1,
// returns list of removed elements, we remove one value, so get first index
r_val = Remove From(theList, Random Integer(N Items(theList)))[1];
Print(Eval Insert("The chosen item was ^r_val^."));
);
Print("The chosen item is " || theList[1] || ".");
-Jarmo