Возможность генерировать истинные случайные числа зависит от энтропии в вашей системе. Некоторые утверждают, что это может быть гарантировано честным броском костей . Другие считают, что замена java.math.Random.nextInt () метода OpenJDK на это тело поможет:
| 1 2 3 | publicintnextInt() {  return14;} | 
 Но это абсурд.  Мы все знаем, что лучший способ добавить истинную энтропию в JVM — переписать java.lang.Integer.IntegerCache при запуске вашей JVM.  Вот код: 
| 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | importjava.lang.reflect.Field;importjava.util.Random;publicclassEntropy {  publicstaticvoidmain(String[] args)   throwsException {    // Extract the IntegerCache through reflection    Class<?> clazz = Class.forName(      "java.lang.Integer$IntegerCache");    Field field = clazz.getDeclaredField("cache");    field.setAccessible(true);    Integer[] cache = (Integer[]) field.get(clazz);    // Rewrite the Integer cache    for(inti = 0; i < cache.length; i++) {      cache[i] = newInteger(        newRandom().nextInt(cache.length));    }    // Prove randomness    for(inti = 0; i < 10; i++) {      System.out.println((Integer) i);    }  }} | 
Когда я в последний раз пытался, выше напечатано
| 01 02 03 04 05 06 07 08 09 10 | 922214548236183391933384 | 
Не верь этому? Попробуйте это в своем приложении! Испытывая это в своем заявлении, вы соглашаетесь со следующими условиями лицензирования :
Если это не требуется действующим законодательством или не согласовано в письменной форме, программное обеспечение, распространяемое по лицензии, распространяется на условиях «КАК ЕСТЬ», БЕЗ ГАРАНТИЙ ИЛИ УСЛОВИЙ ЛЮБОГО РОДА, явных или подразумеваемых.