Percursos
/
JavaScript
JavaScript
/
Exercícios
/
Diário de bordo do capitão
Diário de bordo do capitão

Diário de bordo do capitão

Exercício de aprendizagem

Introdução

Muitos programas precisam de valores (pseudo)aleatórios para simular acontecimentos do mundo real.

Exemplos comuns e familiares incluem:

  • Lançar uma moeda ao ar: um valor aleatório entre ('H', 'T').
  • Lançar um dado: um número inteiro aleatório de 1 a 6.
  • Baralhar um baralho de cartas: uma ordem aleatória de uma lista de cartas.
  • A criação de árvores e arbustos numa simulação de gráficos 3D.

Gerar valores verdadeiramente aleatórios com um computador é um desafio técnico surpreendentemente difícil, e é por isso que também existem geradores "pseudoaleatórios".

Caution

A função Math.random() NÃO deve ser usada em aplicações de segurança e criptografia! Completa o(s) exercício(s) de aprendizagem sobre este conceito para saberes mais

Gerar números aleatórios

Em Javascript, podes gerar números pseudoaleatórios com a função Math.random(). Devolve um número pseudoaleatório de vírgula flutuante entre 0 (inclusive) e 1 (exclusive).

Instruções

A Mary é uma grande fã da série de televisão Star Trek: The Next Generation. Joga muitas vezes jogos de interpretação de papéis com papel e lápis, em que ela e os amigos fingem ser a tripulação da nave espacial Enterprise. A personagem da Mary é o capitão Picard, o que significa que tem de manter o diário do capitão. Adora a parte criativa do jogo, mas não gosta de gerar dados aleatórios na hora.

Ajuda a Mary a criar geradores aleatórios para os dados que aparecem habitualmente no diário do capitão.

1. Gera um número de registo aleatório de nave espacial

A Enterprise (número de registo NCC-1701) não é a única nave espacial a voar por aí! Quando se cruza com outra nave espacial, a Mary precisa de anotar o número de registo dessa nave.

Os números de registo começam com o prefixo "NCC-" e depois usam um número de 1000 a 9999 (ambos inclusive).

Implementa a função randomShipRegistryNumber() que devolve um número de registo aleatório de nave espacial.

randomShipRegistryNumber();
// => "NCC-1947"

2. Gera uma data estelar aleatória

De que serve um diário se não incluir datas?

Uma data estelar é um número de vírgula flutuante. As aventuras da nave espacial Enterprise na primeira temporada de The Next Generation decorrem entre as datas estelares 41000.0 e 42000.0. O "4" representa o século XXIV, o "1" a primeira temporada.

Implementa a função randomStardate que devolve um número de vírgula flutuante entre 41000.0 (inclusive) e 42000.0 (exclusive).

randomStardate();
// => 41458.15721310934

3. Gera um planeta aleatório

A nave espacial Enterprise encontra muitos planetas nas suas viagens. No universo de Star Trek, os planetas estão divididos em categorias com base nas suas propriedades. Por exemplo, a Terra é um planeta de classe M. As classes planetárias possíveis são: D, H, J, K, L, M, N, R, T e Y.

Implementa a função randomPlanetClass(). Deve devolver uma das classes planetárias de forma aleatória.

randomPlanetClass();
// => "K"
Editar via GitHub A ligação abre numa nova janela ou separador
JavaScript Exercism

Estás pronto para começar Diário de bordo do capitão?

Inscreve-te no Exercism para aprenderes e dominares JavaScript com 37 conceitos159 exercícios, e mentoria humana real, tudo grátis.