La libreria Java ha una classe, Random, che implementa un generatore di numeri casuali.
Per generare numeri casuali è sufficente creare un'oggetto della classe, per esempio:
numCasuale = new Random()
e poi applicare uno dei seguenti metodi:
numCasuale.nextInt(n) //intero casuale, compreso tra zero (incluso) ed n (escluso)
numCasuale.nextDouble() //numero casuale in virgola mobile compreso tra zero (compreso) e uno (escluso)
Io li ho usati spesso per le simulazioni (spesso combinati insieme) e non mi hanno mai dato problemi e hanno sempre generato numeri "abbastanza" casuali.