Compartilhar via


Random.NextInt Método

Definição

Sobrecargas

NextInt()

Retorna o próximo valor pseudoaleatório e uniformemente distribuído int da sequência desse gerador de números aleatórios.

NextInt(Int32)

Retorna um valor pseudoaleatório, uniformemente distribuído int entre 0 (inclusive) e o valor especificado (exclusive), extraído da sequência desse gerador de números aleatórios.

NextInt()

Retorna o próximo valor pseudoaleatório e uniformemente distribuído int da sequência desse gerador de números aleatórios.

[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

Retornos

o próximo valor pseudoaleatório e uniformemente distribuído int da sequência deste gerador de números aleatórios

Atributos

Comentários

Retorna o próximo valor pseudoaleatório e uniformemente distribuído int da sequência desse gerador de números aleatórios. O contrato geral de nextInt é que um int valor é gerado e retornado pseudoaleatoriamente. Todos os 2<sup>32</sup> valores possíveis int são produzidos com (aproximadamente) igual probabilidade.

O método nextInt é implementado por classe Random como se por:

{@code
            public int nextInt() {
              return next(32);
            }}

Documentação Java para java.util.Random.nextInt().

Partes desta página são modificações baseadas no trabalho criado e compartilhado pelo Android Open Source Project e usado de acordo com os termos descritos na Creative Commons 2.5 Attribution License.

Aplica-se a

NextInt(Int32)

Retorna um valor pseudoaleatório, uniformemente distribuído int entre 0 (inclusive) e o valor especificado (exclusive), extraído da sequência desse gerador de números aleatórios.

[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

o limite superior (exclusivo). Deve ser positivo.

Retornos

o próximo valor pseudoaleatório, uniformemente distribuído int entre zero (inclusive) e bound (exclusive) da sequência deste gerador de números aleatórios

Atributos

Comentários

Retorna um valor pseudoaleatório, uniformemente distribuído int entre 0 (inclusive) e o valor especificado (exclusive), extraído da sequência desse gerador de números aleatórios. O contrato geral de nextInt é que um int valor no intervalo especificado é gerado e retornado pseudoaleatoriamente. Todos os bound valores possíveis int são produzidos com probabilidade (aproximadamente) igual. O método nextInt(int bound) é implementado por classe Random como se por:

{@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;
            }}

O hedge "aproximadamente" é usado na descrição anterior apenas porque o próximo método é apenas aproximadamente uma fonte imparcial de bits escolhidos independentemente. Se fosse uma fonte perfeita de bits escolhidos aleatoriamente, então o algoritmo mostrado escolheria int valores do intervalo declarado com perfeita uniformidade.

O algoritmo é um pouco complicado. Ele rejeita valores que resultariam em uma distribuição desigual (devido ao fato de que 2^31 não é divisível por n). A probabilidade de um valor ser rejeitado depende de n. O pior caso é n=2^30+1, para o qual a probabilidade de uma rejeição é de 1/2, e o número esperado de iterações antes que o loop termine é 2.

O algoritmo trata o caso em que n é uma potência de dois especialmente: ele retorna o número correto de bits de alta ordem do gerador de números pseudoaleatórios subjacente. Na ausência de tratamento especial, o número correto de bits de baixa ordem seria retornado. Geradores de números pseudoaleatórios congruenciais lineares como o implementado por esta classe são conhecidos por terem períodos curtos na sequência de valores de seus bits de baixa ordem. Assim, este caso especial aumenta consideravelmente o comprimento da sequência de valores retornados por chamadas sucessivas para este método se n é uma pequena potência de dois.

Adicionado em 1.2.

Documentação Java para java.util.Random.nextInt(int).

Partes desta página são modificações baseadas no trabalho criado e compartilhado pelo Android Open Source Project e usado de acordo com os termos descritos na Creative Commons 2.5 Attribution License.

Aplica-se a