Random.NextInt Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Sobrecargas
NextInt() |
Devuelve el siguiente pseudoaleatorio, valor distribuido |
NextInt(Int32) |
Devuelve un pseudoaleatorio, distribuido |
NextInt()
Devuelve el siguiente pseudoaleatorio, valor distribuido int
uniformemente de la secuencia del generador de números aleatorios.
[Android.Runtime.Register("nextInt", "()I", "GetNextIntHandler")]
public virtual int NextInt ();
[<Android.Runtime.Register("nextInt", "()I", "GetNextIntHandler")>]
abstract member NextInt : unit -> int
override this.NextInt : unit -> int
Devoluciones
el siguiente pseudoaleatorio, valor distribuido int
uniformemente de la secuencia del generador de números aleatorios
- Atributos
Comentarios
Devuelve el siguiente pseudoaleatorio, valor distribuido int
uniformemente de la secuencia del generador de números aleatorios. El contrato general de nextInt
es que un int
valor se genera y devuelve de forma pseudoaleatoria. Los 2<sup>32</sup> posibles int
valores se generan con la misma probabilidad (aproximadamente).
La clase Random
implementa el método nextInt
como si:
{@code
public int nextInt() {
return next(32);
}}
Documentación de Java para java.util.Random.nextInt()
.
Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el proyecto de código abierto de Android y se usan según los términos descritos en la licencia de atribución de Creative Commons 2.5.
Se aplica a
NextInt(Int32)
Devuelve un pseudoaleatorio, distribuido int
uniformemente entre 0 (inclusivo) y el valor especificado (exclusivo), extraído de la secuencia del generador de números aleatorios.
[Android.Runtime.Register("nextInt", "(I)I", "GetNextInt_IHandler")]
public virtual int NextInt (int bound);
[<Android.Runtime.Register("nextInt", "(I)I", "GetNextInt_IHandler")>]
abstract member NextInt : int -> int
override this.NextInt : int -> int
Parámetros
- bound
- Int32
límite superior (exclusivo). Debe ser positivo.
Devoluciones
el siguiente pseudoaleatorio, valor distribuido int
uniformemente entre cero (inclusivo) y bound
(exclusivo) de la secuencia de este generador de números aleatorios
- Atributos
Comentarios
Devuelve un pseudoaleatorio, distribuido int
uniformemente entre 0 (inclusivo) y el valor especificado (exclusivo), extraído de la secuencia del generador de números aleatorios. El contrato general de nextInt
es que un int
valor del intervalo especificado se genera y devuelve de forma pseudoaleatoria. Todos los bound
valores posibles int
se generan con la misma probabilidad (aproximadamente). La clase Random
implementa el método nextInt(int bound)
como si:
{@code
public int nextInt(int bound) {
if (bound <= 0)
throw new IllegalArgumentException("bound must be positive");
if ((bound & -bound) == bound) // i.e., bound is a power of 2
return (int)((bound * (long)next(31)) >> 31);
int bits, val;
do {
bits = next(31);
val = bits % bound;
} while (bits - val + (bound-1) < 0);
return val;
}}
La cobertura se utiliza "aproximadamente" en la descripción anterior solo porque el siguiente método es solo una fuente no sesgada de bits elegidos independientemente. Si fuera una fuente perfecta de bits elegidos aleatoriamente, el algoritmo mostrado elegiría int
valores del rango indicado con una uniformidad perfecta.
El algoritmo es ligeramente complicado. Rechaza los valores que darían lugar a una distribución desigual (debido al hecho de que 2^31 no es divisible por n). La probabilidad de que se rechace un valor depende de n. El peor caso es n=2^30+1, para el que la probabilidad de un rechazo es 1/2 y el número esperado de iteraciones antes de que finalice el bucle es 2.
El algoritmo trata el caso en el que n es una potencia de dos especialmente: devuelve el número correcto de bits de orden alto del generador de números pseudoaleatorios subyacente. En ausencia de tratamiento especial, se devolvería el número correcto de bits de orden bajo. Se sabe que los generadores de números pseudoaleatorios lineales congruenciales, como el implementado por esta clase, tienen períodos cortos en la secuencia de valores de sus bits de orden bajo. Por lo tanto, este caso especial aumenta considerablemente la longitud de la secuencia de valores devueltos por llamadas sucesivas a este método si n es una pequeña potencia de dos.
Agregado en la versión 1.2.
Documentación de Java para java.util.Random.nextInt(int)
.
Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el proyecto de código abierto de Android y se usan según los términos descritos en la licencia de atribución de Creative Commons 2.5.