Your question reminded me that I have wanted to write a program that can return N random indices, from a much larger selection vector, without replacement, which means that each index is unique. I wrote such a program this morning, using an efficient algorithm reported by JD Smith in the IDL newsgroup (comp.lang.idl-pvwave). The program is named cgRandomIndices:
http://www.idlcoyote.com/.../cgrandomindices.pro