As has been mentioned it's not good practice to randomise the running order of a suite of tests but It's possible if you don't mind getting dirty with some scripting.
Create a script that that adds each test to an array along with a number. You can then pick a random number reads the test from that array and executes that test.
If you only want to call a test once make sure to add a flag column to the array to show that it has been run, and ignore those rows, you could delete the row in the array if it's strait forward in your scripting language of choice which in my case (vbscript) it's not. You'll need to know how to call scripts from another script.
The drawback to this array method though, is that you will not have each case displayed individually in the log tree, but you can get around this by writing the script calls to the log with Log.Message.
Hope this points you in the right direction.