Pular para o conteúdo principal

Questão de TI - Desenvolvimento de Sistemas — Conceitos e Propriedades do Java — INSTITUTO AOCP 2024

TI - Desenvolvimento de SistemasConceitos e Propriedades do Java
Código
qa631167
Banca
INSTITUTO AOCP
Órgão
DPE MS
Ano
2024
Cargo
Ana Def ( )
Em relação à linguagem de programação Java, qual método da Classe Math retorna um valor numérico do tipo double maior ou igual a 0.0 e menor que 1.0, sendo normalmente utilizado para geração de números aleatórios?
  1. Apublic static double aleatory()
  2. Bpublic static integer aleatory()
  3. Cpublic static double floor()
  4. Dpublic static double sqrt()
  5. Epublic static double random()
Revelar gabarito e comentário

GabaritoE — public static double random()

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Classe Math em Java: geração de números aleatórios

Gabarito: letra E. O método Math.random() retorna um valor double no intervalo [0.0, 1.0), ou seja, maior ou igual a 0.0 e estritamente menor que 1.0, sendo o método padrão da classe Math para geração de números aleatórios. As demais alternativas ou não existem na API (aleatory) ou retornam valores fora desse intervalo (floor, sqrt).

A classe java.lang.Math é uma classe utilitária que fornece métodos estáticos para operações matemáticas comuns, como trigonometria, exponenciação, arredondamento e geração de números aleatórios. O método random() é o único que gera um valor pseudoaleatório uniformemente distribuído no intervalo [0.0, 1.0). Internamente, ele utiliza uma instância de java.util.Random (especificamente o método nextDouble()), que produz um valor double positivo, menor que 1.0 e maior ou igual a 0.0.

Na prática, para gerar um número inteiro aleatório em um intervalo específico, por exemplo, de 1 a 6 (como um dado), o programador combina Math.random() com arredondamento e deslocamento: (int)(Math.random() * 6) + 1. Isso funciona porque Math.random() retorna um valor entre 0.0 (inclusive) e 1.0 (exclusivo); multiplicando por 6 obtém-se um valor entre 0.0 e 5.999..., que ao ser convertido para int (truncando) resulta em 0 a 5, e somando 1 obtém-se 1 a 6.

A distinção importante é entre random() e outros métodos da classe Math que também retornam double, mas com propósitos diferentes: floor(double a) retorna o maior valor inteiro (representado como double) menor ou igual ao argumento, sqrt(double a) retorna a raiz quadrada positiva do argumento, e ceil(double a) retorna o menor valor inteiro maior ou igual ao argumento. Nenhum deles gera números aleatórios.

A pegadinha desta questão está na alternativa A, que inventa um método aleatory() — que não existe na API Java. A banca explora a semelhança com a palavra "aleatório" em inglês ("random"), tentando induzir o candidato a escolher um nome que parece correto, mas que não é um método real da classe Math. O candidato que não conhece a API exata pode cair nessa armadilha.

Guarde o critério decisivo: o método que retorna um valor double no intervalo [0.0, 1.0) para geração de números aleatórios é exclusivamente Math.random(). É esse critério que separa a alternativa correta das demais.

Classe Math (java.lang)
  • 1Métodos que retornam double
    • random()
      • Gera valor em [0.0, 1.0)
      • Usa java.util.Random.nextDouble()
    • floor(double a)
      • Maior inteiro ≤ argumento
      • Ex.: floor(2.7) → 2.0
    • sqrt(double a)
      • Raiz quadrada positiva
      • Ex.: sqrt(9.0) → 3.0
  • 2Métodos inexistentes
    • aleatory() — não existe na API
    • aleatory() com retorno integer — tipo inválido
LEVEL · soulevel.com.br

Alternativa A — ❌ Incorreta

O método aleatory() não existe na classe Math da API Java. A banca criou um nome fictício que lembra "aleatório" (do inglês "random"), mas não há nenhum método com essa assinatura. O método correto é random(), sem o "aleatory".

Alternativa B — ❌ Incorreta

Além de usar o nome inexistente aleatory(), a alternativa erra também no tipo de retorno: integer não é um tipo primitivo em Java (o correto seria int ou Integer), e o método random() retorna double, não um inteiro. A combinação de nome e tipo está totalmente fora da API.

Alternativa C — ❌ Incorreta

O método floor(double a) existe na classe Math, mas sua função é retornar o maior valor inteiro (como double) menor ou igual ao argumento. Por exemplo, Math.floor(2.7) retorna 2.0. Ele não gera números aleatórios e não tem relação com o intervalo [0.0, 1.0).

Alternativa D — ❌ Incorreta

O método sqrt(double a) também existe, mas retorna a raiz quadrada positiva do argumento. Por exemplo, Math.sqrt(9.0) retorna 3.0. Não gera números aleatórios e não se restringe ao intervalo [0.0, 1.0).

Alternativa E — ✅ Correta ⟵ GABARITO

Math.random() é o método da classe Math que retorna um valor double pseudoaleatório, maior ou igual a 0.0 e menor que 1.0. É o método padrão para geração de números aleatórios em Java, e sua assinatura é exatamente public static double random(). Internamente, ele utiliza java.util.Random.nextDouble().

PEGA ESSA DICA!

Para memorizar os métodos da classe Math que retornam double, lembre-se: random() é o único que gera números aleatórios; floor(), ceil(), sqrt(), abs(), pow() etc. realizam operações matemáticas específicas. Na prova, desconfie de nomes que parecem traduções literais (como aleatory) — a API Java usa termos em inglês, e random é o termo correto.

Gabarito: letra E

Link permanente: /questoes/qa631167