View Ian Forbes's profile on LinkedIn

Why you shouldn't use java.util.Random

import java.util.Random;

public class RandomTest{

   public static void main(String[] argv){
      Random lRand = new Random();
      while(true){
	 System.out.write(lRand.nextInt());
      }
   }
}
The above code scores as follows on the dieharder v3.31.1 random number generator (rng) testing suite.
ian@U30Jc:[~]$ java RandomTest | dieharder -a -g 200
#=============================================================================#
#            dieharder version 3.31.1 Copyright 2003 Robert G. Brown          #
#=============================================================================#
   rng_name    |rands/second|   Seed   |
stdin_input_raw|  3.20e+06  |1167177133|
#=============================================================================#
        test_name   |ntup| tsamples |psamples|  p-value |Assessment
#=============================================================================#
   diehard_birthdays|   0|       100|     100|0.11532745|  PASSED  
      diehard_operm5|   0|   1000000|     100|0.06680897|  PASSED  
  diehard_rank_32x32|   0|     40000|     100|0.35497992|  PASSED  
    diehard_rank_6x8|   0|    100000|     100|0.10242890|  PASSED  
   diehard_bitstream|   0|   2097152|     100|0.00000636|   WEAK   
        diehard_opso|   0|   2097152|     100|0.00000000|  FAILED  
        diehard_oqso|   0|   2097152|     100|0.00000000|  FAILED  
         diehard_dna|   0|   2097152|     100|0.00000000|  FAILED  
diehard_count_1s_str|   0|    256000|     100|0.46289356|  PASSED  
diehard_count_1s_byt|   0|    256000|     100|0.40765553|  PASSED  
 diehard_parking_lot|   0|     12000|     100|0.02279508|  PASSED  
    diehard_2dsphere|   2|      8000|     100|0.00000000|  FAILED  
    diehard_3dsphere|   3|      4000|     100|0.00000000|  FAILED  
     diehard_squeeze|   0|    100000|     100|0.53113337|  PASSED  
        diehard_sums|   0|       100|     100|0.39824114|  PASSED  
        diehard_runs|   0|    100000|     100|0.00001316|   WEAK   
        diehard_runs|   0|    100000|     100|0.00252610|   WEAK   
       diehard_craps|   0|    200000|     100|0.00107496|   WEAK   
       diehard_craps|   0|    200000|     100|0.00000018|  FAILED  
 marsaglia_tsang_gcd|   0|  10000000|     100|0.00000000|  FAILED  
 marsaglia_tsang_gcd|   0|  10000000|     100|0.00000000|  FAILED  
         sts_monobit|   1|    100000|     100|0.20733182|  PASSED  
            sts_runs|   2|    100000|     100|0.77988080|  PASSED  
          sts_serial|   1|    100000|     100|0.99446972|  PASSED  
          sts_serial|   2|    100000|     100|0.96100785|  PASSED  
          sts_serial|   3|    100000|     100|0.89285722|  PASSED  
          sts_serial|   3|    100000|     100|0.05393848|  PASSED  
          sts_serial|   4|    100000|     100|0.04895295|  PASSED  
          sts_serial|   4|    100000|     100|0.26833358|  PASSED  
          sts_serial|   5|    100000|     100|0.46433366|  PASSED  
          sts_serial|   5|    100000|     100|0.91882165|  PASSED  
          sts_serial|   6|    100000|     100|0.01945150|  PASSED  
          sts_serial|   6|    100000|     100|0.03725972|  PASSED  
          sts_serial|   7|    100000|     100|0.21674629|  PASSED  
          sts_serial|   7|    100000|     100|0.37352942|  PASSED  
          sts_serial|   8|    100000|     100|0.72413212|  PASSED  
          sts_serial|   8|    100000|     100|0.40851761|  PASSED  
          sts_serial|   9|    100000|     100|0.45110158|  PASSED  
          sts_serial|   9|    100000|     100|0.16321474|  PASSED  
          sts_serial|  10|    100000|     100|0.00931896|  PASSED  
          sts_serial|  10|    100000|     100|0.00060162|   WEAK   
          sts_serial|  11|    100000|     100|0.00001198|   WEAK   
          sts_serial|  11|    100000|     100|0.05470931|  PASSED  
          sts_serial|  12|    100000|     100|0.00000002|  FAILED  
          sts_serial|  12|    100000|     100|0.00019593|   WEAK   
          sts_serial|  13|    100000|     100|0.00000000|  FAILED  
          sts_serial|  13|    100000|     100|0.00000236|   WEAK   
          sts_serial|  14|    100000|     100|0.00000000|  FAILED  
          sts_serial|  14|    100000|     100|0.00000985|   WEAK   
          sts_serial|  15|    100000|     100|0.00927377|  PASSED  
          sts_serial|  15|    100000|     100|0.00000000|  FAILED  
          sts_serial|  16|    100000|     100|0.00000003|  FAILED  
          sts_serial|  16|    100000|     100|0.00005695|   WEAK   
         rgb_bitdist|   1|    100000|     100|0.42363532|  PASSED  
         rgb_bitdist|   2|    100000|     100|0.16556626|  PASSED  
         rgb_bitdist|   3|    100000|     100|0.00554647|  PASSED  
         rgb_bitdist|   4|    100000|     100|0.38799670|  PASSED  
         rgb_bitdist|   5|    100000|     100|0.31175145|  PASSED  
         rgb_bitdist|   6|    100000|     100|0.24307881|  PASSED  
         rgb_bitdist|   7|    100000|     100|0.67005996|  PASSED  
         rgb_bitdist|   8|    100000|     100|0.21794428|  PASSED  
         rgb_bitdist|   9|    100000|     100|0.95224688|  PASSED  
         rgb_bitdist|  10|    100000|     100|0.84906916|  PASSED  
         rgb_bitdist|  11|    100000|     100|0.30530792|  PASSED  
         rgb_bitdist|  12|    100000|     100|0.00923950|  PASSED  
rgb_minimum_distance|   2|     10000|    1000|0.00000000|  FAILED  
rgb_minimum_distance|   3|     10000|    1000|0.00000000|  FAILED  
rgb_minimum_distance|   4|     10000|    1000|0.00000000|  FAILED  
rgb_minimum_distance|   5|     10000|    1000|0.00000000|  FAILED  
    rgb_permutations|   2|    100000|     100|0.06245407|  PASSED  
    rgb_permutations|   3|    100000|     100|0.06711627|  PASSED  
    rgb_permutations|   4|    100000|     100|0.00000000|  FAILED  
    rgb_permutations|   5|    100000|     100|0.00000000|  FAILED  
      rgb_lagged_sum|   0|   1000000|     100|0.00466648|   WEAK   
      rgb_lagged_sum|   1|   1000000|     100|0.00450645|   WEAK   
      rgb_lagged_sum|   2|   1000000|     100|0.00085051|   WEAK   
      rgb_lagged_sum|   3|   1000000|     100|0.01191740|  PASSED  
      rgb_lagged_sum|   4|   1000000|     100|0.54821045|  PASSED  
      rgb_lagged_sum|   5|   1000000|     100|0.19477664|  PASSED  
      rgb_lagged_sum|   6|   1000000|     100|0.14523425|  PASSED  
      rgb_lagged_sum|   7|   1000000|     100|0.00000000|  FAILED  
      rgb_lagged_sum|   8|   1000000|     100|0.11426989|  PASSED  
      rgb_lagged_sum|   9|   1000000|     100|0.06428463|  PASSED  
      rgb_lagged_sum|  10|   1000000|     100|0.10930098|  PASSED  
      rgb_lagged_sum|  11|   1000000|     100|0.00000000|  FAILED  
      rgb_lagged_sum|  12|   1000000|     100|0.85871773|  PASSED  
      rgb_lagged_sum|  13|   1000000|     100|0.00000304|   WEAK   
      rgb_lagged_sum|  14|   1000000|     100|0.17530965|  PASSED  
      rgb_lagged_sum|  15|   1000000|     100|0.00000000|  FAILED  
      rgb_lagged_sum|  16|   1000000|     100|0.12201944|  PASSED  
      rgb_lagged_sum|  17|   1000000|     100|0.00050415|   WEAK   
      rgb_lagged_sum|  18|   1000000|     100|0.85667857|  PASSED  
      rgb_lagged_sum|  19|   1000000|     100|0.01045209|  PASSED  
      rgb_lagged_sum|  20|   1000000|     100|0.00026969|   WEAK
      rgb_lagged_sum|  21|   1000000|     100|0.40791518|  PASSED
      rgb_lagged_sum|  22|   1000000|     100|0.37347909|  PASSED
      rgb_lagged_sum|  23|   1000000|     100|0.00000058|  FAILED
      rgb_lagged_sum|  24|   1000000|     100|0.61873430|  PASSED
      rgb_lagged_sum|  25|   1000000|     100|0.05906252|  PASSED
      rgb_lagged_sum|  26|   1000000|     100|0.36867202|  PASSED
      rgb_lagged_sum|  27|   1000000|     100|0.04691550|  PASSED
      rgb_lagged_sum|  28|   1000000|     100|0.22757449|  PASSED
      rgb_lagged_sum|  29|   1000000|     100|0.00507144|  PASSED
      rgb_lagged_sum|  30|   1000000|     100|0.17803753|  PASSED
      rgb_lagged_sum|  31|   1000000|     100|0.00000000|  FAILED
      rgb_lagged_sum|  32|   1000000|     100|0.99890244|   WEAK   
     rgb_kstest_test|   0|     10000|    1000|0.93061838|  PASSED  
     dab_bytedistrib|   0|  51200000|       1|1.00000000|  FAILED  
             dab_dct| 256|     50000|       1|0.18586199|  PASSED
  	dab_filltree|  32|  15000000|       1|0.00000000|  FAILED  
        dab_filltree|  32|  15000000|       1|0.00000000|  FAILED
       dab_filltree2|   0|   5000000|       1|0.00000000|  FAILED  
       dab_filltree2|   1|   5000000|       1|0.00000000|  FAILED
	dab_monobit2|  12|  65000000|       1|1.00000000|  FAILED