matrices - llenar una matriz con numeros aleatorios sin repetir en java
¿Cómo crear una matriz de 20 bytes aleatorios? (6)
Crea un objeto aleatorio con una semilla y obtén la matriz al azar haciendo:
public static final int ARRAY_LENGTH = 20;
byte[] byteArray = new byte[ARRAY_LENGTH];
new Random(System.currentTimeMillis()).nextBytes(byteArray);
// get fisrt element
System.out.println("Random byte: " + byteArray[0]);
¿Cómo puedo crear una matriz de 20 bytes aleatorios en Java?
Java 7 introdujo ThreadLocalRandom que está aislado del hilo actual .
Esta es otra versión de la solución de la maerics .
final byte[] bytes = new byte[20];
ThreadLocalRandom.current().nextBytes(bytes);
Quería ver cómo todos se sienten sobre esto. Lo estoy usando para encriptar paquetes io a través de tcp.
//class
private static ThreadLocal<SecureRandom> ThreadLocalSecureRandom = null;
public static SecureRandom get ( )
{
if ( ThreadLocalSecureRandom == null )
{
ThreadLocalSecureRandom = new ThreadLocal<>();
}
return ThreadLocalSecureRandom.get();
}
//usage
byte[][] InitialVector = new byte[2][4];
ThreadLocalSecureRandom.get().nextBytes(InitialVector[0]);
ThreadLocalSecureRandom.get().nextBytes(InitialVector[1]);
Si desea un generador de números aleatorios criptográficamente fuerte (también seguro para subprocesos) sin utilizar una API de terceros, puede usar SecureRandom
.
Java 6 y 7:
SecureRandom random = new SecureRandom();
byte[] bytes = new byte[20];
random.nextBytes(bytes);
Java 8 (aún más seguro):
byte[] bytes = new byte[20];
SecureRandom.getInstanceStrong().nextBytes(bytes);
Si ya está utilizando Apache Commons Lang, RandomUtils
convierte en un RandomUtils
una sola línea:
byte[] randomBytes = RandomUtils.nextBytes(20);
Pruebe el método Random.nextBytes
:
byte[] b = new byte[20];
new Random().nextBytes(b);