The most secure way to get random numbers, in my opinion, is to use dices, with dice cups (like these : http://www.bgshop.com/ )
Is this really necessary? Sure, I agree with you completely that good quality random numbers are necessary to ensure a good test. Basically, my question is this: is using real random numbers (as opposed to PRNG generated "randomness") necessary to ensure that a test is valid?
I would expect that the output of a good PRNG, seeded with a decent seed, would be random enough that knowledge of the pattern of the random numbers would not bias a test. For example, the Mersenne Twister algorithm with the parameters set to decent values is well distributed in the first 623 dimensions. I haven't seen any evidence that a human would do better than chance at predicting the next value in the line. While lower quality PRNGs could be a problem - good quality PRNGs are widely available with several free implementations available. One good implementation is from Boost.
If there is a concern about PRNG derived values, then high quality randomness can still be obtained more easily than by throwing dice. www.random.org would be one source (and there are more on the web). A hardware RNG would also be easier to use in the test environment than dice throwing.
