It is frequently useful for applications to store information between runs. In general, if it is important enough to ask the user, it is important enough to remember. IDL provides a handy routine app_user_dir to get a directory to store this type of information, but you are on your own reading and writing these preferences (unfortunately, pref_set and pref_get don't allow application defined or user-defined preferences). MG_Prefs (code, docs) handles the dirty work for you by creating and restoring a SAV file for each of your preferences. This is a bit heavy-handed, but it means you store nearly anything as a preference value.
The class is intended to be simple to use. To store a preference do
prefs->set, 'last_edited', 'myfile.txt'
Then in a later IDL session this preference can be retrieved with
lastEdited = prefs->get('last_edited')
True random numbers cannot be generated by a computer, but there are devices that can be connected to a computer that will generate true random numbers. Since not everyone has one of these devices, there are services that make these random numbers available through the internet.
I added methods to 
A class similar to
A couple weeks ago, I wrote a 