Quiero generar un número aleatorio de tipo corto exactamente como hay una función para tipo entero llamada Random.nextInt (134116). ¿Cómo puedo lograrlo?generar un número aleatorio corto en java?
Respuesta
No hay Random.nextShort()
método, por lo que podría utilizar
short s = (short) Random.nextInt(Short.MAX_VALUE + 1);
La 1 se debe a que el método devuelve un número hasta el número especificado (exclusivo). Ver here
Esto generará un número de 0 a Short.MAX_VALUE incluido (números negativos no fueron solicitados por la OP)
Y se necesita un yeso. –
gracias @juergend, tengo la respuesta – luketorjussen
¿Pero si agregas 1 no podrás generar 0? – Tudor
¿Qué tal short s = (short) Random.nextInt();
? Tenga en cuenta que la distribución resultante puede tener un sesgo. La Especificación del lenguaje Java garantiza que esto no dará lugar a una excepción, el int se truncará para caber en un corto.
EDITAR
realmente hacer una prueba rápida, la distribución resultante parece estar distribuida uniformemente también.
¿Qué sucede si el número generado es mayor que el que se mantiene en un corto? – luketorjussen
solo se conservarán los últimos cuatro bits, pero no generará un desbordamiento. – assylias
pero ¿alterará la uniformidad ajustada de los números aleatorios generados? –
pantalones cortos de Java se incluyen en el -32 768 32 767 → intervalo.
¿por qué no realizar una
Random.nextInt(65536) - 32768
y emitir el resultado en una variable de corto?
+1 - Estaba a punto de escribir exactamente eso. – Deco
Lo supongo y lo escribí por ti para que alargues la vida útil de tu teclado. –
generar simplemente un int como:
short s = (short)Random.nextInt(Short.MAX_VALUE);
El generada int
habrá en el espacio de valores de short
, por lo que se puede lanzar sin pérdida de datos.
Eso generará valores cortos no negativos, excepto Short.MAX_VALUE –
La solución más eficaz que puede producir todos los valores posibles cortos es hacerlo bien.
short s = (short) random.nextInt(1 << 16); // any short
short s = (short) random.nextInt(1 << 15); // any non-negative short
o incluso más rápido
class MyRandom extends Random {
public short nextShort() {
return (short) next(16); // give me just 16 bits.
}
public short nextNonNegativeShort() {
return (short) next(15); // give me just 15 bits.
}
}
short s = myRandom.nextShort();
Bien hecho. – assylias
- 1. Java Generar número aleatorio {-1,0,1}
- 2. ¿Cómo generar un número aleatorio en Bash?
- 3. Cómo generar un número aleatorio de cinco dígitos de Java
- 4. Algoritmo para generar un número aleatorio
- 5. generar un número aleatorio con 7 dígitos
- 6. usando rand para generar un número aleatorio
- 7. ¿Generar un número aleatorio dentro del rango?
- 8. Generar un número aleatorio de N-dígitos
- 9. Java Generar número aleatorio entre dos valores dados
- 10. Número aleatorio en un bucle
- 11. ¿Cómo generar un número aleatorio "grande" en Python?
- 12. ¿Generar un número aleatorio dentro del rango en iOS?
- 13. Generar número aleatorio entre dos números con una rara número
- 14. cómo generar un número aleatorio de 0.5 a 1.0
- 15. Generar un número aleatorio con el preprocesador C
- 16. ¿Cómo generar un valor BigInteger aleatorio en Java?
- 17. Obteniendo un número aleatorio entre 0 y 0.06 en Java?
- 18. Generar un entero aleatorio en un rango en Haskell
- 19. Número aleatorio no repetitivo
- 20. cambiar probabilidad de obtener un número aleatorio
- 21. Cómo generar valor aleatorio negativo en python
- 22. Generando un número aleatorio excluyendo el rango
- 23. ¿Cómo obtener un número aleatorio en JSTL?
- 24. ¿Cómo obtener un número aleatorio en pascal?
- 25. ¿Cómo puedo generar un número aleatorio para cada fila en un TSQL Select?
- 26. Algoritmo óptimo para generar un número aleatorio R no en un conjunto de números N
- 27. ¿Cómo puedo generar un número aleatorio en Java entre 450 y 150 que es un múltiplo de 10?
- 28. Número aleatorio CUDA que genera
- 29. Número aleatorio no repetitivo en numpy
- 30. Número aleatorio en iphone sdk?
qué necesita los números negativos? – luketorjussen
no luke No necesito negativos solo de 0 a máximo corto – waqas